如何阻止EF Core Code First自动生成SQL Server视图代码
解决EF Core Code First自动生成SQL Server视图代码的问题
直接在视图实体的配置中添加ExcludeFromMigrations()方法,就能让EF Core迁移系统忽略该实体的DDL生成,同时运行时仍能正常识别视图映射,无需再来回注释Ignore代码。
修改后的OnModelCreating代码示例:
protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); // views modelBuilder.Entity<LogBudgetView>() .ToView("vwBudgetLog") .HasKey(x => x.Id) .ExcludeFromMigrations(); // 新增这一行,阻止迁移生成视图代码 ... }
补充说明
ExcludeFromMigrations()是EF Core 5及以上版本提供的API,它的作用是:
- 让迁移生成器跳过该实体,不会为其生成创建视图的SQL语句
- 运行时EF Core依然会将该实体与指定的SQL Server视图绑定,正常进行数据查询操作
如果你的项目有多个环境或需要更灵活的控制,也可以通过条件编译符号或环境变量来动态控制是否忽略实体,但ExcludeFromMigrations()是最直接简洁的方案。
内容的提问来源于stack exchange,提问作者John81
相关产品推荐
相关产品推荐

