Как я могу добавить новый элемент в EntitySet с помощью EF4? - PullRequest
0 голосов
/ 16 июня 2011

Я попытался добавить несколько новых элементов в entityset, создав новый экземпляр и добавив его с помощью метода AddTo, затем вызвал метод SaveChanges() для обновления базы данных, но новый код не был добавлен.

foreach (var newitem in newItemsList)
{
      if (newitem.SomeValue > 0)
      {
          dbcontext.AddToMyEntityType(newitem);
      }
}
dbcontext.SaveChanges();

но при использовании метода MyEntityType.CreateMyEntityType() все новые элементы сохраняются в моей базе данных

foreach (var newitem in newItemsList)
{
      if (newitem.SomeValue > 0)
      {
          MyEntityType _newEntity = MyEntityType.CreateMyEntityType();//I passed the required parameters
          dbcontext.AddToMyEntityType(_newEntity);
      }
}
dbcontext.SaveChanges();

почему ????

мне следует использовать метод Create или есть другие способычтобы сделать это?

Редактировать

Я забыл упомянуть, что newitem имеет свойство навигации (внешний ключ для родительской таблицы), и я установил это свойство с помощьюправильный родительский идентификатор

Ответы [ 3 ]

1 голос
/ 16 июня 2011
foreach (var newitem in newItemsList)
{
      if (newitem.SomeValue > 0)
      {
          dbcontext.AddObject("entity set name", newitem);
      }
}
dbcontext.SaveChanges();

или

var entitySet = dbcontext.CreateObjectSet<item type>();
foreach (var newitem in newItemsList)
{
      if (newitem.SomeValue > 0)
      {
          entitySet.AddObject(newitem);
      }
}
dbcontext.SaveChanges();
1 голос
/ 16 июня 2011

Должна быть разница между newItem и _newEntity на уровне свойства.CreateMyEntityType(...) не делает больше, чем new MyEntityType, и установка передаваемых вами свойств. CreateMyEntityType(...) побуждает устанавливать свойства для всех обязательных полей.Возможно, вы установили обязательное свойство (например, строку), которое не установлено в newItem.SaveChanges в вашем первом примере выдает исключение из-за отсутствия обязательного поля, но вы скрыли это исключение (try { ... } catch {} или что-то в этом роде).Проверьте в отладчике, если SaveChanges проходит без исключения.

Гипотеза.

1 голос
/ 16 июня 2011

В первой части вы не инициализируете объект набора сущностей. Это будет работать, если вы инициализируете объект набора сущностей, выполняя что-то вроде этого

 foreach (var newitem in newItemsList)
 {
  if (newitem.SomeValue > 0)
  {  
      MyEntityType obj = new MyEntityType
      {
       value1 = newitem.somevalue,
       value2 = newitem.someothervalue
      };

      myContext.AddToMyEntityType(obj);
  }
 }
  dbcontext.SaveChanges();

В вашей части seceod вы определили enititySet вкоторый вы хотите добавить новый объект, а также инициализировать объект entiity этим

 MyEntityType _newEntity = MyEntityType.CreateMyEntityType();

  myContext.AddToMyEntityType(_newEntity);

Здесь вы говорите, что add _newEntity к моему MyEntityType AddToMyEntityType является устаревшим методом для добавления нового объекта в MyEntityType Entity Set..

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