我正在工作的asp.net mvc-4 web应用程序,我正在使用实体框架5.0。现在,我已经使用ado.net实体框架映射了我的数据库表,该框架生成了一个.edmx文件和DBContext类。
现在我不知道asp.net mvc如何处理以下场景:
我有一个存储库模型类,它直接与数据库实体交互,如下所示:
public class Repository
{
private MyEntities my = new MyEntities();
public void Save()
{
my.SaveChanges();
}此外,我还有以下Controller类,它们启动上述存储库和另一个API存储库类,如下所示:
public class ServerController : Controller
{
Repository repository = new Repository();
APIRepository APIrepository = new APIRepository();
//code goes here
Public ActionResult Create(Emp e)
{
//code goes here..
var result = APIreposioty.SendCall(...);
repository.Save();
}APIRepositoty还启动存储库,如下所示:
public class APIRepository
{
Repository repository = new Repository();现在,在我的控制器类中,我有以下内容:-
现在,当我在action方法中调用repositoty.Save()时?它会将实体对象保存在存储库中&在APIrepository中吗?还是会有两个独立的上下文对象由用户会话管理?他们不互相干涉吗?
发布于 2016-03-24 17:06:04
您的控制器最终创建了实体上下文的不同实例。他们不受任何约束。对其中一个文件的保存只会保存它已加载/注册的实体。另一个处理的实体将不会被保存。
对于您的情况,一种常用的处理模式是使用依赖注入。将其配置为每个控制器只实例化一个DBContext,无论控制器使用多少存储库(直接或通过其他依赖项)。
https://stackoverflow.com/questions/36204556
复制相似问题