EF Core映射
public override void Map(EntityTypeBuilder<BaseProcessingMethod> builderTable)
{ //多个BaseProcessingMethod对应一个ProcessingType
builderTable.HasOne(t => t.ProcessingType).WithMany().HasForeignKey(t => t.ProcessingTypeId);
builderTable.HasOne(t => t.ProcessingType).WithMany().HasForeignKey(t => t.ProcessingTypeName_FromParent);
//一个BaseProcessingMethod对应多个ReworkReason
builderTable.HasMany(t => t.ReworkReason).WithOne().HasForeignKey(t => t.ProcessingMethodId);
}
HasForeignKey
配置属性 () 用作此关系的外键。
public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.ReferenceCollectionBuilder HasForeignKey (params string[] foreignKeyPropertyNames);
foreignKeyPropertyNames String[]
外键属性的名称。
如果实体类型上不存在指定的属性名称 () ,则将添加 (s) 的新阴影状态属性作为外键。 阴影状态属性是实体类中没有相应属性的属性。 属性的当前值存储在 中, ChangeTracker 而不是存储在实体类的实例中。
如果未 HasPrincipalKey(String[]) 指定 ,则将尝试将外键属性的数据类型和顺序与主体实体类型的主键匹配。 如果它们不匹配,形成唯一索引的新阴影状态属性将添加到主体实体类型中,用作引用键。
HasOne
配置一个关系,其中此实体类型具有指向关系中另一类型的单个实例的引用。
调用此方法后,应链接对 或 WithOne(String) 的WithMany(String)调用以完全配置关系。 如果只调用此方法而不调用链接,则不会产生有效的关系。
public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.ReferenceNavigationBuilder HasOne (Type relatedType, string? navigationName = default);
relatedType Type
此关系面向的实体类型。
navigationName String
此实体类型上表示关系的引用导航属性的名称。 如果未指定任何属性,则将在此端不配置导航属性的关系。
public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.ReferenceNavigationBuilder HasOne (string?navigationName);
navigationName String
此实体类型上表示关系的引用导航属性的名称。 导航必须是实体类型上的 CLR 属性。
public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.ReferenceNavigationBuilder HasOne (string relatedTypeName, string? navigationName);
relatedTypeName String
此关系所面向的实体类型的名称。
navigationName String
此实体类型上表示关系的引用导航属性的名称。 如果未指定任何属性,则将在此端不配置导航属性的关系。
WithMany
将此配置为一对多关系。
public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.ReferenceCollectionBuilder WithMany (string? collection = default);
collection String
此关系另一端的集合导航属性的名称。 如果为 null 或未指定,则关系的另一端没有导航属性。
请注意,在没有参数的情况下调用此方法会将关系的此端显式配置为不使用导航属性,即使实体类型上存在此类属性也是如此。 如果要使用导航属性,则必须指定它。
HasMany
配置一个关系,其中此实体类型具有包含关系中其他类型的实例的集合。
public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.CollectionNavigationBuilder HasMany (string navigationName);
navigationName String
此实体类型上表示关系的集合导航属性的名称。 如果未指定任何属性,则将在此端不配置导航属性的关系。
public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.CollectionNavigationBuilder HasMany (string relatedTypeName, string? navigationName);
relatedTypeName String
此关系所面向的实体类型的名称。
navigationName String
此实体类型上表示关系的集合导航属性的名称。 如果未指定任何属性,则将在此端不配置导航属性的关系。
public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.CollectionNavigationBuilder HasMany (Type relatedType, string? navigationName = default);
relatedType Type
此关系面向的实体类型。
navigationName String
此实体类型上表示关系的集合导航属性的名称。 如果未指定任何属性,则将在此端不配置导航属性的关系。
调用此方法后,应链接对 WithOne(String) 的调用以完全配置关系。 如果只调用此方法而不调用链接,则不会产生有效的关系。
WithOne
将此配置为一对一关系。
public virtual Microsoft.EntityFrameworkCore.Metadata.Builders.ReferenceReferenceBuilder WithOne (string? reference = default);
reference String
此关系另一端的引用导航属性的名称。 如果为 null 或未指定,则关系的另一端没有导航属性。
请注意,在没有参数的情况下调用此方法会将关系的此端显式配置为不使用导航属性,即使实体类型上存在此类属性也是如此。 如果要使用导航属性,则必须指定它。
没有粉丝,没有评论,甚至连读者都没有。因为自己写的烂,因为自己水平有限,所以自己的作品一经发出就石沉大海了,得不到任何的回信,就好像自己写的东西是给自己看的。自己的作品怎么看都好像不够完美,全身的毛病,所以读者不喜欢也很正常对吧!
其实最让我开心的是有些读者们夸我文笔不错,或许是有人第一次这样夸我的缘故吧!又或许是我写的东西没什么人认可,我感受到了一种前所未有的激动,对于未来的憧憬,对自己写下去的动力。
因为有你们,我的写作之路才不孤独,因为有你们,我才能坚持到现在,如果有一天我真的写出圈了,或许我们可以整个交流会之类的,到时候促膝长谈。
“书山有路勤为径,学海无涯苦作舟。”写作苦是苦了点,整得我差点就想放弃了,不过还好有你们。我也不急着成功,因为没有个几十年如一日的坚持,哪能轻易成功?
茫茫文海无人意,天下有君识吾心。文海很孤独,但是有诸君,便足以令我至千里。
详见
EntityFramework Core映射关系详解
ReferenceCollectionBuilder.HasForeignKey(String[]) 方法
ReferenceNavigationBuilder.WithMany(String) 方法
ReferenceNavigationBuilder.WithOne(String) 方法
EntityTypeBuilder.HasMany 方法
EntityTypeBuilder.HasOne 方法