Код структуры сущности сначала, нужен совет - PullRequest
1 голос
/ 15 марта 2011

Я новичок в коде работы с фреймом объекта. У меня есть простой класс Cat и список кошек, когда я делаю следующее:

mAllAnimals.Add(new Cat() { Father = null , Name = "Father Kitten", NickName = "Shmil" });
mAllAnimals.Add(new Cat() { Father = mAllAnimals.First(a => a.Name == "Father Kitten") , Name = "Son Kitten" , NickName = "son" });

Я получаю исключение, потому что он не может найти "Отца котенка", но когда я помещаю между утверждениями to "SaveChanges ()", он работает отлично.

Это очень странно для меня, мне действительно нужно сохранять каждый шаг на этом пути? он не может искать в локальной копии и в БД, я подумал, что часть забавного в структуре сущностей заключается в том, что я могу «нормально» работать со своим классом и не должен сохранять свои изменения на каждом этапе пути. Могу ли я заставить его «автоматически сохранять» каждый мой шаг, чтобы мне не приходилось постоянно писать «SaveChanges»

Еще один вопрос, я раньше работал с NHibrnate и все отображения были сделаны с использованием простых файлов XML. я не вижу никаких файлов здесь, это было отображение? Могу ли я изменить это?

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 21 марта 2011

Об отсутствии .edmx см .:

http://blogs.msdn.com/b/adonet/archive/2011/03/07/when-is-code-first-not-code-first.aspx

Code First не использует файл .edmx, и по этой причине он также называется Code Only.Вы делаете сопоставление, используя атрибуты или свободный API.См. Первые две публикации в серии из 12 статей в блоге Entity Framework:

http://blogs.msdn.com/b/adonet/archive/2011/01/27/using-dbcontext-in-ef-feature-ctp5-part-1-introduction-and-model.aspx

3 голосов
/ 15 марта 2011

Это должно работать:

Cat father = new Cat() { Father = null , Name = "Father Kitten", NickName = "Shmil" };
Cat son = new Cat() { Father = father , Name = "Son Kitten" , NickName = "son" };

mAllAnimals.Add(father);
mAllAnimals.Add(son);
context.SaveChanges();

Причина, по которой ваша версия не работает, заключается в том, что вы ищете сущность father в базе данных - но вы добавите ее в БД только тогда, когдавызов SaveChanges()

Что касается сопоставления - ваш проект должен иметь файл .edmx - двойной щелчок, который вызовет конструктор, который также позволяет изменять сопоставление.

...