所谓多模型就是在一个数据库中包含两个不同模型,或者换句话说就是两个不同DbContext的数据都放到同一个数据库中。这里的多模型不是指多租户的数据库(有谁知道EF很好处理多租户数据库的方案,可以联系我来分享给大家),也不支持跨模型共享数据。
Julie Lerman在MSDN Magazine上发表了名为《EF6 Code First Migrations for Multiple Models》的文章来阐述了这个问题的两个可行解决办法:
1,利用EF6的一个新特性,即在DbMigrationsConfiguration中定义不同的ContextKey。
2,利用数据库架构(Schemas)来分离模型和迁移,即在OnModelCreating里面加上一句话modelBuilder.HasDefaultSchema("ModelTwo");
在多模型的情况,可能对启用迁移和添加迁移需要一点技巧,这篇文章中也给出了详细的解决办法。
在EF中使用多模型的方式,带来两方面的好处:更符合领域驱动设计(DDD),在Azure这样的云服务中成本更低。
原文地址:https://msdn.microsoft.com/en-us/magazine/dn948104.aspx