【问题标题】:Dealing with data in multiple databases and Entity Framework处理多个数据库和实体框架中的数据
【发布时间】:2013-11-15 21:04:31
【问题描述】:

我有以下设置(显然该图显示了简化版本)

我想消除数据库之间重复的公共数据,在我的示例中,这是 DB A 中的客户表。在我的其他应用程序中,我只存储 CustomerGuid。我正在考虑添加一个约束以确保 CustomerGuid 有效。

到目前为止一切都很好。(或者可能不是)

问题是当我在我的应用程序层时。我需要创建两个上下文,然后在需要检索客户的姓名和地址时加入内存。

这是最好的方法吗?这似乎比复制每个数据库中的表要好,但现在我不太确定。

我的选择如下:

  1. 创建视图以加入 DB B、C(我倾向于这个,但问题是我无法对从多个数据库中的表中提取的视图形成全文索引)

  2. 继续处理多个 EDMX 并在需要时加入内存。 (全文搜索也是个PITA)

  3. 在每个数据库的新表中复制数据(看起来很恶心)

  4. 链接服务器? EF 如何处理这个问题?

我没有一个直截了当的问题,(所以也许我会被否决)但我想就哪种方法最好和/或我没有想到的方法征求一些反馈和建议的。公认的最佳实践是什么?

【问题讨论】:

  • 出于好奇,您为什么将这些放在不同的数据库中?是否有您没有向我们展示的表格,或者只是您列出的数据库中的那些表格?
  • 有些表格我没有显示,为了清楚起见我只是简化了图表。
  • 链接表将是我的选择...您使用什么数据库? MSSQL?
  • MSSQL 2008;链接表是指链接服务器吗?
  • 是的,抱歉..链接的服务器不是表格。 MSSQL 2008 可以很好地处理它们。根据您在这里面临的情况,最好创建一个专用的数据仓库服务器和一些 ETL 包来获取数据并将其移动到集中式服务器。大量选项,只需选择最适合您要求的选项即可。

标签: .net sql entity-framework


【解决方案1】:

在使用 DDD 和 ORM 等现代解决方案进行设计时,您应该尝试“放弃”旧的 OO 方式。只要您可以设计以确保数据通常相同,那么在多个位置保存数据确实没有问题。

阅读this关于朱莉·勒曼(Julie Lerman)面临同样困境的文章。

链接服务器非常酷,但不应该是预先依赖。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多