1

嗨,我被赋予了使用 Entity Framework 4 创建 N-Teir 网站的任务,并且我遇到了一些砖墙,据我所知,这很有可能。

到目前为止,我的计划是拥有这些层

网站(应用层),
我所称的 Name.Framework (BLL),
Name.Data (DAL),
Name.Entities(包含网站/bll 中使用的 POCO 类和其他结构类,
Name.Common(实用程序类)

我曾尝试使用存储库类,但正在努力让事情按我的想法工作。下面是我遇到的一些例子。

如果我想使用 .include() 这会在我的存储库中还是业务层的责任?(而且我不知道这将如何在 BLL 中工作)

.Order() 同样的问题?据我了解,这需要在存储库中,或者至少以某种方式传递到存储库中?!?

我应该使用 BLL 将上下文传递给存储库/数据层吗?目前,当我从数据层获取实体时,任何未在 repo 中引用的导航属性都会返回“对象上下文处置”,业务层是否仍应保留上下文等,以免发生这种情况?

或者总结一下这个帮助!!!

我需要在明天之前按某种顺序进行处理(哎呀!),因为项目负责人想知道我们是要继续使用实体框架还是迁移到 NHibernate,因为我们对它有更多的了解。

感谢您的任何帮助或建议马特

4

3 回答 3

1

我目前正在使用 EF4 Code-Only 开发一个网络爱好项目,其中我具有以下结构([name] 是我的项目的名称):

  • [名称].Web - 一个 ASP.NET MVC 2 项目
  • [name].Web.Models - 自定义视图模型,以及来自我的实体对象的 AutoMapper 映射
  • [name].Models - 我的 POCO 类和存储库接口
  • [name].DataAccess - 一些与数据访问相关的接口,例如IUnitOfWork
  • [名称].DataAccess.EF - 所有实体框架相关的类和接口

我还有一个针对上述每个项目的测试项目,以及几个带有帮助程序和测试扩展的项目。

值得一提的是,这个爱好项目的部分目的是让我学习如何将 EF4 与我自己选择的一些设计模式一起使用(在这个项目中与 EF 相关的是存储库模式和工作单元)图案)。另一个部分目的是建立一个我可以在以后的项目中重用的代码库,这影响了我的应用程序中项目之间的划分——例如,如果我不关心重用,我可能会在一个项目而不是两个项目中拥有所有与数据访问相关的类。

于 2010-04-12T15:24:41.107 回答
1

我自己寻找类似的东西我发现了这个。目前没有过多地研究它,但看起来很有希望。

于 2011-02-08T09:02:50.607 回答
0

我在这篇文章之后实现了一个基本的 EF、poco、Repository、UnitOfWork 架构:

http://devtalk.dk/CommentView,guid,b5d9cad2-e155-423b-b66f-7ec287c5cb06.aspx

我发现它对这些努力非常有帮助。不知道它是否对您有帮助,但其他人可能对该链接感兴趣。

于 2010-06-03T21:15:02.597 回答