2012-04-25 46 views
0

我正在开发一个已经由我之前的几个开发人员启动的项目。特别困扰我的一件事是他们在两个数据库中有单个实体分割。实体在两个数据库中拆分

实体被称为跟踪器。

第一个数据库被称为ConfigBase,它有一个名为跟踪器的表,它具有TrackerId及其属性。

第二个数据库被称为StoreBase,它也有一个名为Trackers的表,它的元素与第一个基地中的TrackerId相匹配。

此外,让事情更加复杂的是,当您访问ConfigBase中的特定跟踪器时,您将获得SQL服务器名称和凭据,以便您可以在StoreBase中访问它。

现在,如果您使用普通的旧ADO.NET,这一切都不会太复杂。但是,因为我的任务是提出最新的EF 4.3.1的完整解决方案,所以我遇到了维护我的实体一致性的麻烦。与Tracker实体相关的一半是在ConfigBase中,另一半在StoreBase中,通常我必须得到一些结果。

有没有解决方案,这不涉及数据库级别的虚拟合并。我正在寻找可以使用Code First建模完成的解决方案。

在此先感谢!

+1

对不起,但是这个架构对我来说没有意义。我可以想象没有理由在两个表之间拆分单个实体,不要说两个数据库。我会努力合并数据库,否则你将不得不编写整个图层来处理查询和合并数据库之间的实体。 – 2012-04-25 18:48:01

+0

为这项工作选择正确的锤子,我认为对于这个传统应用程序,EF可能不是最理想的......如果您正在使用现有数据库,那么即使是代码优先通常也是一个坏主意。 – Andreas 2012-04-25 20:03:10

+0

在我得到项目继续之前构建了构建方式,所以没有太多选项留给我:)基本上,您只是确认了我自己已经完成的内容,所以非常感谢:) – 2012-04-27 05:11:11

回答

1

不,没有提供开箱即用的解决方案,因为EF本身甚至不能在每个上下文中使用多个数据库。因此,您要么合并数据库,要么单独访问每个数据库(每个数据库使用单独的跟踪器实体),并以某种方式在应用程序中合并数据。

+0

它已经合并到应用程序中,一个上下文总是初始化,另一个是由连接字符串构建器动态创建的。只是想知道是否有更优雅的方式来做到这一点:)谢谢无论如何:) – 2012-04-27 05:10:19