Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架不';不要应用更改_C#_Entity Framework - Fatal编程技术网

C# 实体框架不';不要应用更改

C# 实体框架不';不要应用更改,c#,entity-framework,C#,Entity Framework,我和EF合作了将近一年,突然它停止了更新关于更新实体的数据库。 我怀疑这是因为将EF版本更改为较新的版本(6.1),但后来我回过头来,没有比这更好的了 下面是我遇到的问题的代码示例: using(ContextClass db = new ContextClass()) { var order = db.Orders.FirstOrDefault(x => x.RecNo == 584667); order.primaryStatus = "Closed"; ord

我和EF合作了将近一年,突然它停止了更新关于更新实体的数据库。 我怀疑这是因为将EF版本更改为较新的版本(6.1),但后来我回过头来,没有比这更好的了

下面是我遇到的问题的代码示例:

using(ContextClass db = new ContextClass())
{
    var order = db.Orders.FirstOrDefault(x => x.RecNo == 584667);
    order.primaryStatus = "Closed";
    order.secondaryStatus = "Closed";
    db.Orders.Attach(order);
    db.Entry(order).State = EntityState.Modified;
    db.SaveChanges();
}
然后运行这段代码,从日志中我可以看到以下图片:

UPDATE [dbo].[Orders]
SET [ID] = @0, [OrderNo] = @1, [ProdLine] = @2, [ProdPos] = @3, 
(and here comes every single field EXCEPT those, which I'm trying to modify!)
WHERE ([RecNo] = @20)
SELECT [RecTime], [RecStatus], [OrderStatus], [MPAStatus]
FROM [dbo].[Orders]
WHERE @@ROWCOUNT > 0 AND [RecNo] = @20
-- @0: 'Module-1' (Type = String, Size = 50)
-- @1: 'L1' (Type = String, Size = 50)
-- @2: 'Line2' (Type = String, Size = 50)
-- @3: 'Pos3' (Type = String, Size = 50)
--
-- @20: '584667' (Type = Int64)
同样的问题也适用于我项目中的每个地方,我只是尝试更新数据库,而不管我尝试使用哪种方法。 整个实体,按属性,不重要

你能告诉我问题的根源吗?

天哪, 就在我发布了这个问题之后,我找到了答案,答案很明显。 由于某种原因,我在将模型中的StoreGeneratedPattern属性指定为“computed”时没有注意到。 通过这样做,我希望我只是抑制每次填充此字段的要求,因为它不允许为null,并在数据库端获得一个默认值,但我不排除在这种情况下,我将无法在之后手动更改它。
我保留我的问题。也许它能更快地解决一些人的问题。

你能给我们看一下
Order
类的代码吗?可能
primaryStatus
secondaryStatus
缺少
public
修饰符,或者它们是字段,而不是属性,……另外,为什么要显式调用Attach和set State?如果使用fluent映射,请同时显示映射代码,或者,如果在发布模型代码时使用属性,则包含模型注释。就像@marsze所说的,如果实体对象已经附加到上下文中,您不需要执行另一个附加或设置状态,因为您刚刚检索到它。是的,您是对的。非常感谢。我不知道在我们检索实体后,它可以自由更改,而无需执行额外的执行。