通过 Fluent API 的 EF Core 外键
EF Core Foreign Key via Fluent API
我有一个 2 类:
public class Item
{
public int Id { get; set; }
public string ItemName { get; set; }
}
public class ItemStats //inhenrit from Item
{
public int Id { get; set; }
public int MaxEnhanceLevel { get; set; }
public Item Item { get; set; }
}
这是一个 TPT,但由于它不受开箱即用的支持,所以我无法使用继承。我知道如何使用数据注释来实现这一点
[ForeignKey(nameof(Item))]
public int Id { get; set; }
但是我如何通过 FluentAPI 执行此操作?我不想在我的 Entitie 类.
中添加数据注释
你有一个One-to-one relationship with single navigation property, principal entity Item
and dependent entity ItemStats
, using the so called shared primary key association,其中从属实体PK也是主体实体的FK。
一对一关系的流利 API 是 HasOne
、WithOne
、HasForeignKey
和 HasPrincipalKey
。请注意,此处 HasForeignKey
和 HasPrincipalKey
的通用类型参数(一对多关系通常省略)很重要,因为它们标识了哪个实体是主体,哪个实体是依赖的。
话虽如此,您的模型的流畅配置是:
modelBuilder.Entity<ItemStats>()
.HasOne(e => e.Item)
.WithOne()
.HasForeignKey<ItemStats>(e => e.Id);
我有一个 2 类:
public class Item
{
public int Id { get; set; }
public string ItemName { get; set; }
}
public class ItemStats //inhenrit from Item
{
public int Id { get; set; }
public int MaxEnhanceLevel { get; set; }
public Item Item { get; set; }
}
这是一个 TPT,但由于它不受开箱即用的支持,所以我无法使用继承。我知道如何使用数据注释来实现这一点
[ForeignKey(nameof(Item))]
public int Id { get; set; }
但是我如何通过 FluentAPI 执行此操作?我不想在我的 Entitie 类.
中添加数据注释你有一个One-to-one relationship with single navigation property, principal entity Item
and dependent entity ItemStats
, using the so called shared primary key association,其中从属实体PK也是主体实体的FK。
一对一关系的流利 API 是 HasOne
、WithOne
、HasForeignKey
和 HasPrincipalKey
。请注意,此处 HasForeignKey
和 HasPrincipalKey
的通用类型参数(一对多关系通常省略)很重要,因为它们标识了哪个实体是主体,哪个实体是依赖的。
话虽如此,您的模型的流畅配置是:
modelBuilder.Entity<ItemStats>()
.HasOne(e => e.Item)
.WithOne()
.HasForeignKey<ItemStats>(e => e.Id);