2014-01-16 31 views
0

访问只读外部系统时,ORM如何工作? 说例如我创建了一个订购系统,它有自己的数据库,可以通过我的应用程序的ORM层访问。这个系统的一部分是通过SQL调用(没有可用的Web服务)来检查外部系统,以获取产品/库存等信息。将ORM与外部只读系统结合使用

是否有可能系统的这部分使用ORM,或者您必须自己编写差异类来访问数据和返回对象,例如ORM返回的对象?我想这样做,更高层不需要知道手边的产品/库存来自单独的系统。

任何输入赞赏

回答

1

在过去,当我不得不面对像你这样的设置,我创建的本地数据库(SQL Server)的观点,即从远程数据库中读取数据。然后我为视图生成包装数据对象(实体框架中的实体)。

每次需要从远程数据源获取数据时,都会使用生成的ORM对象访问视图的数据对象,以便像其他任何本地调用一样通过ORM框架进行调用。

远程数据源可以通过OPENDATASOURCE设置为链接服务器,也可以是同一台服务器上的不同数据库(这是针对SQL Server的)。可能有其他选项我没有考虑,其他数据库可能支持不同的设置。

因此,远程数据显示为本地数据 - 就ORM框架而言,数据来自作为框架一部分的数据对象。真正的远程处理发生在数据库视图中。正因为如此,远程数据和本地数据的高级应用程序没有区别。这种方法适用于实体框架/ .NET以及我几年前使用的方法,并且我确信其他ORM框架能够使用此方法(在其他平台上)。

+0

谢谢。那么您将远程数据源设置为链接服务器? – Lock

+0

@锁定使用SQL Server是的。也有可能使用相同的服务器,但数据位于不同的数据库中 - 在这种情况下,您只需使用完全限定的名称引用远程表。存储过程也是如此 - 它们可以是ORM本地的,但可以转到远程服务器/数据库。 – xxbbcc