【问题标题】:SaveChanges not working when context being added in another class file in C#, EntityFramework在 C# EntityFramework 的另一个类文件中添加上下文时,SaveChanges 不起作用
【发布时间】:2016-11-11 21:28:19
【问题描述】:

我正在从我的控制器调用一个函数。

biz.AddActivityLog(Param1, Param2);

这个函数在另一个类文件中。

在该函数中,我正在借助从该函数收到的参数创建一个新对象。

然后我将新创建的对象添加到上下文中。

context.MyObject.Add(Obj);

但我没有使用context.SaveChanges();here。

我只在我的控制器内执行 SaveChanges。

但是我在函数内部添加到上下文中的对象没有被保存。

当我在不使用该函数的情况下尝试相同的代码时 - (在我的控制器内部创建了我的新对象)它被保存了。为什么我不能将它添加到另一个类的上下文中并从我的控制器执行 Savechanges?

请帮忙。

【问题讨论】:

  • 你是否将上下文对象从类传递给控制器​​?更多的代码会很有帮助

标签: c# entity-framework savechanges


【解决方案1】:

如果您将对象添加到上下文中,则上下文对象会跟踪其更改。如果您从不执行 SaveChanges 方法,这些更改会在上下文对象被破坏的地方丢失。

在控制器中创建新上下文时,会创建一个新实例,其中没有任何更改的数据。 (它没有作为单例实现)

您要么必须将上下文传递给控制器​​,要么在更改它的类中保护上下文。 但是将上下文传递给 Controller 是一种非常糟糕的做法,因为它违反了单一职责原则 (SRP),因为它将 mvc 代码与 ef 代码混合在一起。如果您稍后决定切换到另一个持久性框架,则必须更改使用您的类的每个控制器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多