zoukankan      html  css  js  c++  java
  • 【EF Core】EF core中使用FluentAPI对外键进行指定配置

    有两个实体,关系如下:

    public class CatalogNodeEntity : FullAuditedEntity<Guid>, IMultiTenant
        {
    public virtual string Name { get; protected set; } public virtual string DisplayName { get; protected set; } private List<CatalogLayerEntity> Layers = new List<CatalogLayerEntity>(); }
    public class CatalogLayerEntity:FullAuditedEntity<Guid>, IMultiTenant
        {
    
            public virtual string Name { get; protected set; }
    
            public virtual Guid? CatalogNodeId { get; set; }
            
            public virtual CatalogNodeEntity CatalogNode { get; set; }
    
         }

    配置one to many 的实体关系,可这样配置

    builder.Entity<CatalogNodeEntity>(m =>
                {
                    m.ToTable(options.TablePrefix + "CatalogNode", options.Schema);
                    m.ConfigureByConvention();
                    m.Property(o => o.Name).IsRequired().HasMaxLength(CatalogConsts.MaxNameLength);
                    m.HasMany(u => u.Layers).WithOne(u=>u.CatalogNode).HasForeignKey(u=>u.CatalogNodeId).OnDelete(DeleteBehavior.Cascade);
                });

    这里有个坑需要注意,如果在WithOne的函数中没有指定实体,又在HasForeignKey中指定了外键,这是进行Migration就会出现两个外键

    m.HasMany(u => u.Layers).WithOne().HasForeignKey(u=>u.CatalogNodeId).OnDelete(DeleteBehavior.Cascade);

  • 相关阅读:
    DOCTYPE声明
    JS获取对象宽度和高度
    在Flash中巧妙替换字体
    web.config 配置兼容 IIS7 II6
    防刷新重复提交/防后退方法
    iframe自适应,跨域,JS的document.domain
    JS动态创建Table IE不显示Fix
    C#简繁转换
    用TransactSQL 命令压缩数据库
    JS内置对象[转载]
  • 原文地址:https://www.cnblogs.com/c-supreme/p/13209854.html
Copyright © 2011-2022 走看看