目前我有两个edmx文件:用于MySQL和SQL Lite(用于内存测试)。我需要将它们映射到同一组POCO类。保留两个edmx文件是否可以,或者我应该使用两个具有公共映射和概念模型的存储模型?
更新。我想澄清一下内存测试点。我想在本地开发人员运行它们时使用内存中测试(以使其更快)。但构建服务器将在MySQL上运行测试,以证明它适用于类似生产的数据库。
答案 0 :(得分:3)
不要使用不同的数据库平台进行测试。使用EF绝对是错误的做法。每个数据库在其EF提供程序中都可以具有不同的功能支持,因此您将测试不同的代码。
如果你真的想使用两个不同的数据库平台,你应该使用流畅的API进行映射,因为它会使它更简单。
使用EDMX文件进行映射时,您总是需要一些双重性。显然,您的类必须保持不变,因此您的概念模型必须保持相同。这意味着两个EDMX文件的CSDL部分必须相同。 SSDL部分必须不同,因为它针对的是给定的数据库平台。只有当SSDL中的表具有不同的名称,不同的列,不同的方案或关系具有不同的名称时,MSL部分必须是不同的。
如果你想减少重复性,你根本不应该使用EDMX,而是直接使用CSDL,MSL和SSDL文件 - 你将失去设计师的支持。这可能是正确的,但更难使用。
最简单的方法是保持除数据库提供程序之外的所有内容,并让一些预构建脚本从MySQL的主EDMX更新第二个EDMX for SQLite - 此更新的脚本,帮助应用程序或XSLT转换完全取决于您。