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);

  • 相关阅读:
    bzoj4554: [Tjoi2016&Heoi2016]游戏
    bzoj3166: [Heoi2013]Alo
    luogu3398 仓鼠找sugar
    bzoj3261: 最大异或和
    bzoj3446: [Usaco2014 Feb]Cow Decathlon
    BZOJ1742[Usaco2005 nov]Grazing on the Run 边跑边吃草
    bzoj2750: [HAOI2012]Road
    bzoj4448: [Scoi2015]情报传递
    bzoj2809: [Apio2012]dispatching
    bzoj 1452
  • 原文地址:https://www.cnblogs.com/c-supreme/p/13209854.html
Copyright © 2011-2022 走看看