如何使用EF4向EntitySet添加新项
本文关键字:添加 新项 EntitySet 何使用 EF4 | 更新日期: 2023-09-27 17:59:14
我试图通过创建新实例向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
有一个导航属性(父表的外键),我用正确的父ID 设置了这个属性
属性级别的newItem
和_newEntity
之间必须存在差异。CreateMyEntityType(...)
不会比new MyEntityType
做更多的工作,也不会设置您传入的属性。CreateMyEntityType(...)
鼓励为所有必需字段设置属性。也许您设置了newItem
中没有设置的必需属性(如字符串)。第一个例子中的SaveChanges
实际上抛出了一个异常,因为缺少必需的字段,但您隐藏了这个异常(通过try { ... } catch {}
或其他方式)。如果SaveChanges
异常通过,请检查调试器。
一个假设。
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();
在第一部分中,您没有初始化实体集的对象如果你通过做一些类似的事情来初始化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();
在你的第二部分中,你已经定义了本体集,你想在其中添加新的对象,并通过这个初始化本体的对象
MyEntityType _newEntity = MyEntityType.CreateMyEntityType();
myContext.AddToMyEntityType(_newEntity);
您在这里告诉我,将_newEntity添加到我的MyEntityTypeAddToMyEntityType是用于向MyEntityType实体集添加新对象的弃用方法。。