我是 Entity Framework 和 .NET 的新手,正在构建 MVC 4 应用程序。我想我对应该在哪里创建数据库上下文实例有点困惑。在我的应用程序中,我有几个层次:Web、业务、数据访问、数据库(这些都是单独的项目)。在数据访问层,每个表都有一个类。我看到的一个示例显示了在数据访问层内的每个方法中创建上下文(我可能误解了它)。当更新多个表作为业务逻辑的一部分时,这似乎不太实用。在每个数据访问层方法中创建新上下文的结果似乎是这个错误:An entity object cannot be referenced by multiple instances of IEntityChangeTracker
更新多个表时。
那么在业务层方法中创建上下文然后将其传递给数据访问层方法是否可以接受?或者有更好的方法吗?
上下文来自业务层的情况如下:
public User RetrieveUserById(int id, MyDbContext ctx)
{
User findUser = ctx.Users.Find(id);
return findUser;
}
而不是在数据访问层方法中创建上下文:
public User RetrieveUserById(int id)
{
var ctx = new MyDbContext();
User findUser = ctx.Users.Find(id);
return findUser;
}
感谢您的帮助!