EntityFramework Core 迁移忽略主外键关系

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static class RemoveForeignKeyExetension
{
    public static ModelBuilder RemoveForeignKeys(this ModelBuilder modelBuilder)
    {
        var entityTypes = modelBuilder.Model.GetEntityTypes().ToList();
 
        for (int i = 0; i < entityTypes.Count(); i++)
        {
            var entityType = entityTypes[i];
 
            var references = entityType.GetDeclaredReferencingForeignKeys().ToList();
 
            using (((Model)entityType.Model).Builder.Metadata.ConventionDispatcher.DelayConventions())
            {
                foreach (var reference in references)
                {
                    reference.DeclaringEntityType.RemoveForeignKey(reference);
                }
            }
        }
        return modelBuilder;
    }

  

忽略外键约束(SQLite)

上述是针对SQL Server所做的测试,理论上MySQL同理,但对于SQLite数据库,EF Core 3.x提供了全局方案:通过数据连接字符串配置【Foreign Keys = False】全局抑制建立外键约束。

optionsBuilder.UseSqlite("Database=sqlite.db;Foreign Keys=False");

官方团队好像并未提供针对SQL Server或MySQL忽略而不建立外键约束而可以加载导航属性的办法,只能采取笨拙或者如上所述写个程序去删除外键约束或者通过注解方式实现。

EFCore 迁移命令移除外键

https://www.cnblogs.com/lludcmmcdull/p/13502567.html

https://blog.51cto.com/u_15065850/3444526

 

posted @   跟着阿笨一起玩.NET  阅读(221)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2013-07-31 匿名对象和object的转换
点击右上角即可分享
微信分享提示