我有多个现有的SQL Server数据库,用于具有95%相似模式的不同客户端, 但是每个数据库中可能会有一些额外的自定义列来处理某些特定的客户需求。
例如,数据库A可能有一个包含两个自定义列的表:
StdColumn1, StdColumn2, CompanyACustom1, CompanyACustom2
和数据库B可能有一个自定义列:
StdColumn1, StdColumn2, AnotherCompanyCustom1
和数据库C可能没有自定义列,只需:
StdColumn1, StdColumn2
我想配置实体框架,以便C#对象具有一些额外的预定义属性(例如:CustomColumn1
,CustomCustom2
等),如果它们存在,则映射到这些自定义列,或者如果自定义列不存在则无效。
视图是一种方法,但我想知道我是否可以使用CSDL,SSDL和MSDL文件来做这样的事情。或者也许this technology可以起作用?
答案 0 :(得分:1)
Entity Framework是一个编译时框架,必须提前知道架构。它没有动态模式,这是您所需要的。但是有一些实体框架“扩展”在封面下使用EF并在运行时编译模型。缺点是您需要使用“动态”对象与它进行交互(因为在编译时不知道类型)。
预制扩展...... Entity Framework Dynamic Data Model Builder Entity Framework Runtime Model Adapter
或者你可以推出自己的解决方案,通过XML操作来调整你的SSDL和MSL文件...... http://social.msdn.microsoft.com/Forums/en-US/6ed96028-0d43-4ab7-ade6-d5aaf3ffd6cf/updating-the-entity-framework-at-runtime