我有一个类'BudgetDetail',就像这样:
public class BudgetDetail
{
public int Id { get; set; }
public Budget Budget{ get; set; }
public int BudgetId { get; set; }
public Product Product { get; set; }
public int ProductId { get; set; }
public byte Quantity { get; set; }
public int Price { get; set; }
public int Iva { get; set; }
public int Total { get; set; }
}
这是此模型的Fluent API配置:
public class BudgetDetailConfiguration: EntityTypeConfiguration<BudgetDetail>
{
public BudgetDetailConfiguration()
{
ToTable("BudgetDetails");
HasKey(pd => new { pd.Id, pd.BudgetId, pd.ProductId });
Property(pd => pd.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
}
当我进行迁移时,Id属性的标识设置为true但是如果我查看数据库中的标识它被设置为false而我不知道为什么,我想这是因为我有复合这张桌子的钥匙。
如果您有复合键,标识列不起作用吗?
答案 0 :(得分:1)
您有一个BudgetId和一个预算 - 与产品相同。添加两者并不意味着它们是相关的。 Budget对象与BudgetId无关 - BudgetDetails类有两个不同的属性 - 一个是BudgetId(FK),另一个是实际的Budget对象。
删除你的对象并保留他们的PK - 它们是BudgetDetail类中的FK。
public class BudgetDetail
{
public int Id { get; set; }
// public Budget Budget{ get; set; }
public int BudgetId { get; set; }
// public Product Product { get; set; }
public int ProductId { get; set; }
.../...
}