代码之家  ›  专栏  ›  技术社区  ›  Chris Klepeis

ASP.NET分层应用程序-在层之间共享实体数据模型

  •  3
  • Chris Klepeis  · 技术社区  · 16 年前

    如何在我的C Web应用程序的所有层之间共享自动生成的实体数据模型(生成的对象类),同时只授予数据层中的查询访问权?这使用典型的3层方法:数据、业务、表示。

    我的数据层返回 IEnumerable<T> 到我的业务层,但我不能将T类型返回到表示层,因为我不希望表示层知道数据层的存在,而数据层是实体框架自动生成我的类的地方。

    建议将数据模型与单独的层分离,但我不确定如何将数据模型与实体框架提供的查询功能分离。

    2 回复  |  直到 16 年前
        1
  •  5
  •   Nelson Rothermel    16 年前

    如果你使用 POCO entities (.NET 4+),那么这很容易(或者至少更容易)。有可能吗?

    你可以像本所说的那样创建DTO,但是你基本上是缩小并复制每个实体。如果您愿意,EF2将创建“简化”实体,并动态添加更改跟踪、延迟加载等。

    否则,答案就是你不能。如果实体依赖于实体框架,那么你就不能在整个应用程序中使用它们,而不需要拖动这个依赖关系。在这种情况下,您必须使用DTO。这里有一个第三方的选择EF1或EF2没有POCO实体。 http://automapper.codeplex.com/

    编辑: 以下是一些有用的链接,可以进一步了解所有这些内容:

    1. 一般MS指南: http://msdn.microsoft.com/en-us/library/bb738470.aspx
    2. POCO模板: http://blogs.msdn.com/adonet/pages/walkthrough-poco-template-for-the-entity-framework.aspx
    3. POCO模板 包括如何 移动到单独的项目 : http://blogs.msdn.com/adonet/pages/feature-ctp-walkthrough-poco-templates-for-the-entity-framework.aspx
    4. POCO代理: http://blogs.msdn.com/adonet/archive/2009/12/22/poco-proxies-part-1.aspx
    5. 如何拆分模型: http://blogs.msdn.com/adonet/archive/2008/11/25/working-with-large-models-in-entity-framework-part-2.aspx
    6. 员工跟踪程序示例应用程序 (层、单元测试、模拟, 储存库等): http://code.msdn.microsoft.com/ef4/Release/ProjectReleases.aspx?ReleaseId=4279
        2
  •  2
  •   Coding Flow    16 年前

    你可以创造 DTOs 从数据实体中,将DTO传递到代表层。

    推荐文章