ASP.NET MVC中EF框架能否同时使用Code First与DB First模式
EF Code First项目同时使用DB First的方案解答
结论
完全可以在同一个项目中同时使用两种模式,二者的上下文实例互相独立,不会干扰原有Code First模式的正常运行,完全适配你当前只读查询外部数据库的需求。
具体实现可选方案
- 方案1:直接使用DB First模式生成独立上下文
针对外部数据库的连接字符串单独走DB First生成流程,创建独立的ExternalReadOnlyDbContext上下文类和对应表的实体文件,不需要修改原有Code First的任何业务代码。为了适配只读需求,可以在该上下文的构造函数中添加代码Database.SetInitializer<ExternalReadOnlyDbContext>(null);,关闭EF针对该上下文的迁移校验、数据库结构修改逻辑,避免误操作影响外部数据库。 - 方案2:轻量化适配,无需引入DB First的edmx文件
如果你只需要查询外部库的少数表,可以直接手写对应表的实体类,再单独写一个轻量的Code First风格的只读上下文,同样关闭数据库初始化器,只编写查询逻辑即可,这种方式更简洁,不需要依赖DB First的自动生成流程。
注意事项
两个上下文需要配置各自独立的连接字符串,不要跨上下文做实体关联操作,原有Code First的迁移、业务写入逻辑完全不会受到任何影响。
因为你仅对外部数据库做查询操作,无论选择哪种方案都不需要配置外部库的迁移逻辑,不会改动外部数据库的任何结构,风险极低。
内容的提问来源于stack exchange,提问作者AhmadAGH
相关产品推荐
相关产品推荐

