【问题标题】:Models and databases in EFEF 中的模型和数据库
【发布时间】:2012-11-15 11:07:34
【问题描述】:

我有两个 SQL Server 数据库(dbInfodbData),我想将一个/两个 EF 模型添加到我的 .NET 应用程序(WPF、ASP.NET MVC、...)。

问:添加 EF 模型时最好的方法是什么?添加两个模型,每个数据库一个?

  • 添加两个 edmx 模型,每个数据库一个?
  • 使用SQL Synonyms 为两个数据库添加一个edmx 模型?
  • 其他版本...

【问题讨论】:

  • 到目前为止我发现的最大问题是,您受限于同义词的任何限制。这对您来说可能是也可能不是问题,具体取决于您的服务器是如何设置的以及您有什么样的查询。例如,您不能在链接服务器上使用 OUTPUT 关键字,因此如果您的同义词指向链接服务器上使用 OUTPUT 的过程,则会导致错误。

标签: sql sql-server database entity-framework model


【解决方案1】:

这在很大程度上取决于两个数据库之间的交互量。

尽管如此,我强烈希望将它们保存在单独的模型中。一个模型容纳两个数据库会引入许多您希望避免的复杂性和依赖性:

  • 必须定义同义词。
  • 当“其他”数据库发生变化时,您可能需要修改主数据库中的同义词。
  • 如果一个数据库发生变化,您必须更新到整个模型。
  • 数据库(可能)不能有不同的版本(edmx 模型对版本敏感)。
  • 同义词是指向不同数据库中对象的路径。可以通过移动数据库之一或重命名目标对象来破坏路径。您只会在运行时注意到。
  • 备份/恢复必须同步。

可能还有更多……

但是,可能有一个令人信服的要求可以推翻这些反对意见。如果您想在一个事务中修改两个数据库中的数据,使用同义词和一个上下文(以及一个数据库连接)会更容易。否则,您必须在代码中使用 TransactionScope 并在数据库服务器上启用 DTC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    相关资源
    最近更新 更多