java中主键与外键_EF Core:同时使用ID作为主键和外键

仅使用属性,不使用FluentAPI:

public abstract class DtoBase

{

[Key]

public Guid ID { get; protected set; }

}

public class PersonDto : DtoBase

{

[InverseProperty("Person")]

public ProspectDto Prospect { get; set; }

}

public class ProspectDto : DtoBase

{

[ForeignKey("ID")] // "magic" is here

public PersonDto Person { get; set; } = new PersonDto();

}

我不知道FluentAPI中 ForeignKey 的等价物 . 所有其他(Key和InverseProperty)都是可配置的,但为什么要使用两种方法而不是一种 .

上面的代码生成以下迁移代码:

protected override void Up(MigrationBuilder migrationBuilder)

{

migrationBuilder.CreateTable(

name: "Persons",

columns: table => new

{

ID = table.Column(nullable: false)

},

constraints: table =>

{

table.PrimaryKey("PK_Persons", x => x.ID);

});

migrationBuilder.CreateTable(

name: "Prospects",

columns: table => new

{

ID = table.Column(nullable: false)

},

constraints: table =>

{

table.PrimaryKey("PK_Prospects", x => x.ID);

table.ForeignKey(

name: "FK_Prospects_Persons_ID",

column: x => x.ID,

principalTable: "Persons",

principalColumn: "ID",

onDelete: ReferentialAction.Cascade);

});

}

看起来非常接近您的需求 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值