当我使用 LINQ 和 .dbml 文件进行编程时,只有一个上下文。但是,当我创建一个 MVC 站点时,似乎每个实体都有单独的上下文(这是 MVC 教程向我展示的方式;使用“电影”上下文)。
I have:
public class AccountsContext : DbContext
{
public AccountsContext()
: base("DefaultConnection")
{
}
public DbSet<Account> Accounts { get; set; }
}
我有:
public class ClientsContext : DbContext
{
public ClientsContext()
: base("DefaultConnection")
{
}
public DbSet<Client> Clients { get; set; }
}
当我调用这些时,我必须创建单独的上下文,例如:
private AccountsContext db = new AccountsContext();
private ClientsContext clientsContext = new ClientsContext();
...这既令人烦恼,又显得多余,因为我知道当我使用 LINQ 时,我只需要实例化一个数据库对象。
有没有一种方法可以只使用一个上下文,这是推荐的吗?
不应该有任何事情阻止您使用一种上下文。数据库以及用于访问它的工具应该完全独立于数据库之外的任何内容(业务逻辑、服务层、UI 等)。
上下文的数量或使用它们的方式不应根据您的客户端技术而改变。
MVC 的哪一点让您相信您需要多个上下文?是什么阻止你这样做?
如果您认为需要为每个实体使用上下文,因为示例就是这样,那么您不需要。仅使用一种上下文。
如果有帮助的话,这就是具有多个实体的简单上下文的样子:
public partial class abook_dbEntities : DbContext
{
public abook_dbEntities()
: base("name=abook_dbEntities")
{
}
public DbSet<Entity> Entities { get; set; }
public DbSet<Contact> Contacts { get; set; }
}
如果有帮助的话,典型的业务流程如下所示:
UI -> 控制器 -> 业务逻辑 -> 数据访问 -> 数据库
您的数据上下文将进入您的数据层。您的逻辑将进入您的业务逻辑层。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)