Проблема с добавлением объектов в Entity Framework, я предполагаю, что это проблема с моей моделью базы данных - PullRequest
1 голос
/ 17 марта 2011

Моя проблема в том, что я пытаюсь добавить дочернюю сущность, но продолжаю сталкиваться с проблемами.

Вот моя ситуация:

У меня есть куча профилей. К каждому профилю прикреплена группа категорий-приоритетов. К каждой Приоритету категории прикреплен один Приоритет атрибута.

enter image description here

Когда я обновляю свою модель в Visual Studio, я получаю следующее: enter image description here

Я могу без проблем заставить работать следующее:

CategoryPriority _categoryPriority = new CategoryPriority();
Profile _profile = DB.GetProfile(ProfileID);
_profile.CategoryPriorities.Add(_categoryPriority);
DB.savechanges()

Но как-то не получится:

AttributePriority _attributePriority = new AttributePriority();    
CategoryPriority _categoryPriority = new CategoryPriority();
_categoryPriority.AttributePriorities.Add(_attributePriority);
// Error! There is no option of "Add" or any other operation for the matter.

Profile _profile = DB.GetProfile(ProfileID);
_profile.CategoryPriorities.Add(_categoryPriority);
DB.savechanges()

Полагаю, это связано с тем, как настроена модель EF. В идеале я хотел бы иметь один к одному между таблицами CategoryPriority и AttributePriority.

Я добавлю изображение моей модели.

Есть идеи? Любая помощь высоко ценится!

Edit: Я добавил изображения в свой пост.

Забавно, если я напишу:

Profile _p = new Profile();

Там тоже нет опции _p.Add .. очевидно, я что-то упускаю ..

Редактировать 2: Итак, я получил его на работу, почти ... Я знаю, не самый эстетичный код, я работаю над этим ..

Profile _profile = this.GetProfile(this.GetUserID(arrangeattributesviewmodel.ProfileID));

int iter = 0;
foreach (AttributeListForCategory _category in arrangeattributesviewmodel.AllAttributesForCheckBoxList.CategoryAttributeList)
{
iter++;
CategoryPriority _categoryPriority = new CategoryPriority();

_categoryPriority.ProfileID = arrangeattributesviewmodel.ProfileID;
_categoryPriority.CategoryID = _category.CategoryID;
_categoryPriority.CategoryName = _category.CategoryName;
_categoryPriority.CategoryID = _category.CategoryID;
_categoryPriority.CategoryPriorityNR = iter;


AttributePriority _attributePriority = new AttributePriority();
_attributePriority.AttributePriorityString = _category.CompilePriorityString();
_categoryPriority.AttributePriority = _attributePriority;
_profile.CategoryPriorities.Add(_categoryPriority);

db.SaveChanges(); // It fails here with the message below..
}

{"Зависимое свойство в ReferentialConstraint отображается в столбец, созданный магазином. Столбец:« CategoryPriorityID ».»}

Есть идеи?

Изменить 3: Решено!

Мне пришлось создать атрибут Приоритет в моей категории Приоритет ...

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Ваше отношение между CategoryPriority и AttributePriority равно 1: 0..1, поэтому нет метода Add.Вы просто звоните:

_categoryPriority.AttributePriority = attributePriority;

Кстати.Как это возможно, что ваша сущность определяет AttributePriority, но ваш код использует AttributePriorities?Он не должен компилироваться.

1 голос
/ 17 марта 2011

Убедитесь, что внешние ключи настроены правильно, а затем обновите модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...