EF CoreEF core中使用FluentAPI对外键进行指定配置
Posted C_supreme
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF CoreEF 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);
以上是关于EF CoreEF core中使用FluentAPI对外键进行指定配置的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 EF Core 在 ASP.NET Core 中取消应用迁移
如何在 EF Core 中使用 DbFunction 翻译?
在 EF Core 中使用 IsolationLevel 开始事务