EntityFramework或LinqToSql实体命名空间

时间:2009-11-29 22:27:03

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

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

Infrastructure.SqlServer

  • 客户(NS:Infrastructure.SqlServer.Customers)
    • 客户
    • 地址
  • 产品(NS:Infrastructure.SqlServer.Products)
    • 产品
    • ProductVariant
    • 产品分类

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

感谢。

3 个答案:

答案 0 :(得分:1)

这可以用EF,但我不推荐它。

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

我认为绝对不值得麻烦。

亚历

答案 1 :(得分:0)

我在我们的应用程序中完成了这项工作。我们的实体名称空间基于我们的SQL Server模式。每个命名空间都在它自己的DBML中。不幸的是,L2S无法模拟.DBML文件之间的关系,但我们在某种程度上解决了这个问题。

兰迪

答案 2 :(得分:0)

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

你可能想要的......

大多数人出于维护原因该怎么做;即将模型分成模块化块。我自己也经历了很多实验。如果你决心要坚持下去,那就有一篇文章here。手动编辑详细的EDMX文件 目前非常笨拙且容易出错。如果您要求的是您所希望的分割的总范围可能很好。如果你有一个更大的模式和更多的分裂,你可能会发现它太痛苦了。

对于许多人而言,这显然是理想的功能,并且需要针对典型的企业数据库使用。从长远来看,这可能是固定的,但现在我的建议是解决这个问题。 要完成,LinqToSQL不支持以任何方式拆分模型。