#entity-framework
#entity-framework
Вопрос:
Я использую EF4 в VS2010, и у меня есть следующий код:
MyEntity entity = null;
entity = MyEntity.CreateMyEntity(0);
context.MyEntities.AddObject(entity);
context.AcceptAllChanges();
context.SaveChanges();
Проблема в том, что AddObject() не добавляет объект в коллекцию, и я просто не могу понять, почему. Что происходит, когда я просматриваю код, так это то, что он переходит к первому свойству «CityId», которое, конечно, равно нулю, а затем, похоже, просто возвращается оттуда … как будто у него была проблема с тем, что свойство равно null. Единственным ненулевым полем в моей базе данных (MSSQL) является столбец Id, который является столбцом identity … Я в полном недоумении. Пожалуйста, помогите!
Заранее спасибо!
Мэтт
Комментарии:
1. Что делает
MyEntity.CreateMyEntity(0);
код? Я помню, что у меня были некоторые проблемы, когда я использовал объекты POCO и не использовал контекст. Метод CreateObject<T>() для создания объекта. Кроме того, проверьте окно стека в VS на наличие подозрительных вызовов метода EF — это может дать вам представление о том, что происходит. И снова — опубликуйте, настроен ли EF как POCO / Code-First и что делаетMyEntity.CreateMyEntity()
метод.2. Спасибо за ваш ответ, Джеффим. MyEntity. Метод CreateMyEntity() фактически показывает вам, какие свойства необходимо заполнить (НЕ NULL в db).
Ответ №1:
Вы не должны вызывать метод accept all changes .
Комментарии:
1. Спасибо тебе, Акаш. Я не могу в это поверить. Что именно делает AcceptAllChanges()? В документации говорится: «Принимает все изменения, внесенные в объекты в контексте объекта». … в какой ситуации я бы вызвал этот метод?
2. Заражать его никогда не следует вызывать, поскольку он вызывается EF, когда изменения правильно сохраняются в базе данных. Если вы пытаетесь реализовать свой собственный способ взаимодействия с базой данных, вам следует использовать это.