小编ral*_*nso的帖子

EF和存储库模式 - 在一个控制器中以多个DbContexts结束 - 任何问题(性能,数据完整性)?

我对ASP.NET MVC 3的大部分知识来自阅读Adam Freeman和Steven Senderson撰写的Pro ASP.NET MVC 3 Framework一书.对于我的测试应用程序,我试图非常密切地坚持他们的例子.我正在使用存储库模式加上Ninject和Moq,这意味着单元测试工作得很好(即无需从数据库中提取数据).

在本书中,存储库的使用方式如下:

public class EFDbTestChildRepository
{
    private EFDbContext context = new EFDbContext();

    public IQueryable<TestChild> TestChildren
    {
        get { return context.TestChildren; }
    }

    public void SaveTestChild(TestChild testChild)
    {
        if (testChild.TestChildID == 0)
        {
            context.TestChildren.Add(testChild);
        }
        else
        {
            context.Entry(testChild).State = EntityState.Modified;
        }
        context.SaveChanges();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是与之相关的DbContext:

public class EFDbContext : DbContext
{
    public DbSet<TestParent> TestParents { get; set; }
    public DbSet<TestChild> TestChildren { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

请注意:为了简化这个提取的例子,我在这里省略了接口ITestChildRepository,然后Ninject会使用它.

在其他来源中,我看到了一个更通用的存储库方法,其中一个存储库足以满足整个应用程序的需要.显然在我的情况下,我最终在我的应用程序中列出了相当多的存储库列表 - 基本上我的域模型中的每个实体都有一个.不确定这两种方法的优缺点 - 我只是按照这本书的安全性来做.

最后得到我的问题:每个存储库都有自己的DbContext …

repository-pattern entity-framework-4 asp.net-mvc-3 dbcontext

8
推荐指数
2
解决办法
6721
查看次数