【问题标题】:EntityFramework or LinqToSql Entity NamespaceEntityFramework 或 LinqToSql 实体命名空间
【发布时间】:2009-11-29 22:27:03
【问题描述】:

我想根据我的域结构指定实体命名空间。 通常是这样的:

Infrastructure.SqlServer

  • 客户(NS:Infrastructure.SqlServer.Customers)
    • 客户
    • 地址
  • 产品(NS:Infrastructure.SqlServer.Products)
    • 产品
    • 产品变体
    • 产品类别

如何使用 LinqToSql 或 EntityFramework 做到这一点?似乎我们只能指定一个唯一的“实体命名空间”,例如 Infrastructure.SqlServer.Entities

谢谢。

【问题讨论】:

    标签: linq-to-sql entity-framework domain-driven-design


    【解决方案1】:

    EF 可以做到这一点,但我不建议这样做。

    问题是您必须进入 EDMX 并手动编辑 XML(即离开设计器)以在 EDMX 文件的 CSDL 部分中创建多个模式。

    在我看来绝对不值得麻烦。

    亚历克斯

    【讨论】:

      【解决方案2】:

      我已经在我们的应用程序中做到了这一点。我们的实体命名空间基于我们的 SQL Server 架构。每个命名空间都在它自己的 DBML 中。不幸的是,L2S 无法对跨 .DBML 文件的关系进行建模,但我们已经在一定程度上解决了这个问题。

      兰迪

      【讨论】:

        【解决方案3】:

        您可以通过消除每个不需要的表来在数据库架构上创建单独的模型。您可以使用 L2S 或实体框架来执行此操作。我猜这不是你的意思。您将无法在查询中包含来自两个模型的实体。

        你可能想要什么...

        大多数人出于维护原因这样做;即将模型拆分为模块化块。我自己对此进行了很多实验。有一篇文章here如果你决心坚持。手动编辑详细的 EDMX 文件 目前非常笨拙且容易出错。如果您的要求是您想要的拆分的总范围,那可能很好。如果你有一个更大的架构和更多的拆分,你可能会觉得太痛苦了。

        这显然是许多人想要的功能,并且需要用于典型的企业数据库。从长远来看,这可能会得到解决,但现在我的建议是解决这个问题。 完整地说,LinqToSQL 不支持以任何方式拆分模型。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-12-19
          • 1970-01-01
          • 2013-01-11
          • 1970-01-01
          • 1970-01-01
          • 2017-08-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多