我使用EF提供商提供Odata服务。我工作正常,很容易创建。但现在它需要改变。此问题与this one类似。但我不清楚答案。
我需要能够同时提供服务的两个(或更多)版本,因为无法一次更新所有客户端。我想首先继续使用EF代码(因为它直到现在都很容易),但这不是必需的。我只有很少的服务,所以我不介意重写,如果这将给我所需的灵活性。
使用c#实现Odata服务的最佳(最简单和可维护)方法是什么,它可以从同一个数据库中同时支持同一服务的多个版本。
我尝试使用反射提供程序转换EF dbcontext。我想要这样的东西:
db -> EF db context -> reflection DB context.v1 -> DataService.v1
和
db -> EF db context -> reflection DB context.v2 -> DataService.v2
如果只有EF选择允许ToList()
我确实需要支持写(对于某些服务)
将2个EF db上下文定位到同一个数据库将是一个可接受的解决方案,但我不知道是否以及如何实现此目标。
提前致谢
答案 0 :(得分:0)
我找到了解决问题的方法,我想分享一下。有关我的解释外观at this blog post的详细描述。
我的解决方案基于三个项目:
服务项目中的datacontext设置为不迁移数据库并使用以下语句忽略架构差异:
Database.SetInitializer<ServiceV1.MyDbContext>(null);
希望这有助于任何人!