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

  • 相关阅读:
    前后端分离下的自动化部署
    bouncy castle的配置
    列出本机JCE提供者,支持消息摘要算法,支持公钥私钥算法
    javaScript动态参数
    PKCS10生成证书csr
    未来编程语言---猜测
    html编辑网站
    java反编译工具JD-GUI
    java.lang.OutOfMemoryError: PermGen space
    修改idea的运行内存
  • 原文地址:https://www.cnblogs.com/c-supreme/p/13209854.html
Copyright © 2011-2022 走看看