如何使用EF4将新项添加到EntitySet?

时间:2011-06-16 13:19:34

标签: c# .net entity-framework-4

我尝试通过创建新实例并使用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有一个导航属性(父表的外键),我用一个正确的父ID设置了这个属性

3 个答案:

答案 0 :(得分:1)

在第一部分中,您没有初始化实体集的对象 如果你通过做这样的事情

来初始化entityset的对象,这将有效
 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);

这里你要告诉我将_newEntity添加到我的MyEntityType中 AddToMyEntityType是一个用于向MyEntityType实体集添加新对象的depreceated方法..

答案 1 :(得分:1)

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();

答案 2 :(得分:1)

属性级别newItem_newEntity之间必须存在差异。 CreateMyEntityType(...)不会比new MyEntityType更多,并设置您传入的属性。CreateMyEntityType(...)鼓励为所有必填字段设置属性。也许你设置了一个未在newItem中设置的必需属性(如字符串)。您的第一个示例中的SaveChanges实际上会抛出异常,因为缺少必填字段,但您隐藏了此异常(通过try { ... } catch {}或其他内容)。如果SaveChanges毫无例外地通过,请检入调试器。

一个假设。