我想在 2 个实体之间创建一个一对一的映射,但是在添加属性(下方)和流畅的 API 代码后,我在构建迁移文件时收到此错误消息(下方)。
仅供参考 - 我已经构建了表并且我的主键(Id)在“BaseEntity”中
我希望能够做的是从 StripeTransfer 开始并访问 StripePayment 数据。像这样:
var somePropertyValue = _dbContext.StripeTransfers.StripePayment.someStripePaymentProperty
要求 - 我不知道首先创建哪个实体行,所以任何一行都应该能够在另一行之前添加。
错误:
从 'StripeTransfer.StripePayment' 到 'StripePayment.StripeTransfer' 与外键属性 {'SourceTransactionId' : string} 的关系不能以主键 {'Id' : int} 为目标,因为它不兼容。为此关系配置具有兼容类型的主键或一组外键属性。
这是我的代码:
public class StripePayment: BaseEntity
{
// primary key "Id" in BaseEntity
public string LatestChargeId { get; set; }
public StripeTransfer StripeTransfer { get; set; }
}
public class StripeTransfer : BaseEntity
{
// primary key "Id" in BaseEntity
public string SourceTransactionId { get; set; }
public StripePayment StripePayment { get; set; }
}
流畅的API:
modelBuilder.Entity<StripePayment>()
.HasOne<StripeTransfer>(t => t.StripeTransfer)
.WithOne(g => g.StripePayment)
.HasForeignKey<StripeTransfer>(g => g.SourceTransactionId);