最后一个弱我有一个我尝试重新创建的错误。一块现有的代码在数据库上进行了批量插入。但是,数据库中的值不允许重复。旧代码在每次使用SaveChanges添加AddObject后都将更改保留到数据库中。这表现不佳。因此,不是每次我在每1000条记录后保存它(并在交易中完成此操作,但与此示例无关),而不是保存它。AddObject之后的实体框架查询
下面的这段代码给出了我做了什么的概述。
TestEntities test = new TestEntities();
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
string q = j.ToString();
if (!test.warehouses.Any(x => x.combi == q))
{
warehouse wh = new warehouse();
wh.combi = j.ToString();
wh.ean = j.ToString();
test.warehouses.AddObject(wh);
}
}
}
test.SaveChanges();
我不知道那是什么让任何疑问给出了数据库没有结果的实体框架只查询数据库中的数据,而不是待处理的数据(和我是假设会有一个结果。 )因此,这会在上面的代码中导致不需要的重复。
现在我解决了它,以便尽快存储要添加到内存中的对象,然后将它们存储在数据库中。这会起作用,但会在代码中产生很多开销。有没有办法解决这个问题?你能告诉EF来处理数据库和待处理的更改吗?所有的ORM都是这样工作的吗?
感谢, 帕特里克
我试过本地,但它说它不知道本地。 (首先与设计师一起使用数据库) – Patrick
@Patrick我首先使用代码,但是如果Local无法识别[link](http://msdn.microsoft.com/en-us/library/gg679246(v = vs.103))。 aspx),那么ObjectStateManager可以帮助:[link](http://stackoverflow.com/a/6400097/551322) – nrodic
在项目中,我们有一个codefirst项目,在那里我们有Local属性。谢谢。 – Patrick