相关疑难解决方法(0)

通用存储库使用EF 4.1有什么意义

随着我深入研究DbContext,DbSet和相关接口,我想知道为什么你需要围绕这些实现实现一个单独的"通用"存储库?

它看起来像DbContext和IDbSet做你需要的一切,并在DbContext中包含"工作单元".

我在这里遗漏了什么,或者似乎人们喜欢无缘无故地添加另一层依赖.

unit-of-work repository-pattern entity-framework-4.1

145
推荐指数
3
解决办法
3万
查看次数

ASP.NET MVC3和Entity Framework Code第一个架构

我之前的问题让我再次思考层,存储库,依赖注入和这样的架构.

我的架构现在看起来像这样:
我首先使用EF代码,所以我只创建了POCO类和上下文.这创建了db和model.
级别更高的是业务层类(提供者).我为每个域使用不同的提供程序...比如MemberProvider,RoleProvider,TaskProvider等.我在每个提供程序中创建我的DbContext的新实例.
然后我在我的控制器中实例化这些提供程序,获取数据并将它们发送到Views.

我的初始架构包括存储库,我之所以摆脱它是因为我被告知它只会增加复杂性,所以为什么我不仅仅使用EF.我想这样做..直接从控制器使用EF,但我必须编写测试,它与真正的数据库有点复杂.我不得不假装 - 以某种方式模拟数据.因此,我为每个提供商创建了一个接口,并使列表中的硬编码数据成为假提供者.有了这个,我回到了一些东西,我不知道如何正确地进行.

这些事情开始过于复杂化......许多方法和"模式"......它产生了太多的噪音和无用的代码.

是否有任何SIMPLE和可测试的体系结构用于使用Entity Framework创建和ASP.NET MVC3应用程序?

architecture asp.net-mvc unit-testing entity-framework code-first

53
推荐指数
2
解决办法
2万
查看次数

在组织上,在使用实体框架代码优先时,我应该在哪里放置常见查询?

我正在使用EF 4.1 Code First布局一个新的数据层,从较旧的自制数据层迁移.

我已经设置了两个程序集,一个用于我的上下文,一个用于所有POCO代码的第一个类.

我有一些业务逻辑,例如,对一个表(或几个表)的查询,这些表在几个不同的地方使用. 我应该把它放在哪里?

它不能进入​​POCO类,因为它连接了几个表,因此需要一个上下文.它可能会进入上下文,但是上下文会因数百个无组织的查询而变得臃肿. 所有业务逻辑都有共同的模式或安排吗?

.net entity-framework entity-framework-4.1

23
推荐指数
1
解决办法
7398
查看次数

UnitOfWork和GenericRepository Pattern是否首先在EF 4.1代码中是多余的?

想知道我是否需要使用Genericrepository模式和UnitOfWork来模拟存储库.我正在使用MOQ.Is它现在是多余的,因为我注意到EF 4.1有IDBSet.

我还没弄明白如何编写一些通用的IDBSet.如果你有一个实例IDBSet的例子,你能告诉我吗?

有什么建议?

unit-testing mocking unit-of-work repository-pattern entity-framework-4.1

20
推荐指数
1
解决办法
9139
查看次数

ASP.MVC:反映IQueryable而不是Linq to SQL的存储库,DDD如何提问

我想创建一个DDD存储库,它返回与Linq到SQL基础类匹配的IQueryable实体,减去任何关系.我可以轻松地返回实体减去与Linq选择新{field,field,...}投影的关系.如何编写Repository Entity类?如何从具有存储库类而不是Linq to SQL类的存储库中返回一个对象,并且仍然使用Linq选择中的多个实体填充它?我如何在ViewModel中引用此返回的类?

我对此很新,因此显而易见的错误.我是否错过了船,只应从存储库返回完整的实体,而不是投影?在从存储库发送之前,我仍然需要删除Linq to SQL关系.我完全不在基地吗?我真的想保留IQueryable数据类型.

例如,我的存储库中的Linq to SQL代码:

public class MiniProduct
{
    public MiniProduct( string ProductNo, string Name, string Description, double Price)
    {    this.ProductNo = ProductNo;
         this.Name = Name;
         this.Description = Description;
         this.Price = Price;
    }
}

public IQueryable<MiniProduct> GetProductsByCategory( string productCategory)
{
    return ( from p in db.Products
             from c in db.Categories
             from pc in db.ProductCategories
             where c.CategoryName == productCategory &&
                   c.CatID == pc.CatID &&
                   pc.ProductID == p.ProductID
             select new { p.ProductNo, p.Name, p.Description, p.Price } ); …
Run Code Online (Sandbox Code Playgroud)

domain-driven-design iqueryable repository linq-to-sql

12
推荐指数
2
解决办法
5241
查看次数