没有DB的实体框架?

时间:2012-03-05 14:37:06

标签: entity-framework orm entity-framework-4 entity

是否可以在不将模型链接到后端的实际数据库的情况下使用Entity Framework 4.3?

我需要在VS设计器中构建数据库的概念模型,然后我想手动处理各种后端数据库(可怕的遗留系统)的提取,插入和更新。我需要能够做到这一点,没有EF呻吟没有表格映射等。我意识到这是一个非常奇怪的事情想要做...

这样做的原因是我们希望从这些遗留系统转变为精心设计的数据模型和.NET环境,但我们仍需要在开发过程中保持功能并向后兼容旧系统。然后,我们将进入一个阶段,我们可以将旧数据(来自大约6个不同的数据库)导入到与我正在构建的EF模型匹配的单个数据库中。理论上,我们应该能够从被黑客攻击的EF模型切换到与新数据结构匹配的适当EF模型。

这可行吗?是否可以使用EF接口,LINQ而不实际将其指向数据库?

我设法通过覆盖生成的DbContext并公开查询旧系统的IQueryable属性来查询遗留系统。我现在最大的争斗是实际更新数据。

如果我能够对实体进行EF跟踪更改,但实际上并未保存这些更改。我应该能够覆盖上下文中的SaveChanges()方法,以手动插入各种遗留表。

目前,我对这个问题的态度很有帮助。

UDPATE 2012年9月4日:我选择使用EDMX文件设计器来构建数据模型,并使用T4生成代码。这使我能够手动编写映射代码以满足我的需要。它还允许我以后相对容易地执行遗留数据迁移。

2 个答案:

答案 0 :(得分:0)

如果我遇到您的情况,我会设置新的数据库服务器并将旧服务器链接到它。然后创建存储过程以与INS进行接口以进行INSERT / UPDATE / DELETE。这样,您的EF代码将与传统支持混乱分开。在停用旧数据库服务器时,您可以相应地更新存储过程。一旦您没有更多的旧数据库服务器,您可以继续使用您的sprocs或刷新您的EF数据连接以直接使用表模式。

答案 1 :(得分:0)

实体框架是将实体链接到数据存储而无需手动填充。 否则你只是使用linq的类。

如果你的意思是你不想要一个单独的数据存储,如sql server,mongo等,那么只需让你的应用程序创建数据库作为一个捆绑在你的app_data文件中的mdb文件。这意味着您不需要数据库服务器,因此数据库是您应用程序的一部分。

另一方面,如果您想要一种不同的方式保存到数据库,您可以创建自己的数据适配器,以便按照您的喜好行事。 mongo .net实体框架组件就是一个例子。

或者,只使用代码,你可以使用存储过程来持久保存到数据库,这可能有点冗长和烦人的EF,但可以弥补你的差距,并允许你建立一个良好的架构与模型你希望它被转换成你的存储库中的糟糕的一个。

然后,当新数据库准备就绪时,您可以重新编写您的仓库以使用savechanges,然后就完成了。

这当然只适用于仅代码方法。

相关问题