有两个班级;
public class Item
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public virtual BinCard BinCard { get; set; }
}
和
public class BinCard
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public int ItemId { get; set; }
[Required]
public DateTime Date { get; set; }
[Required]
public double Qty { get; set; }
public ObservableCollection<Item> Item { get; set; }
}
BinCard.Id 是 PK 和自动增量。
我希望使用 Item.Id 和 BinCard.ItemId 使用* FluentAPI *来表达两个表之间的关系。
请帮我正确创建这种关系。
答案 0 :(得分:1)
EF不支持非PK主要ID,因为它不支持PK以外的唯一键。要完成这项工作,您必须根据BinCard.Id
和BinCardId
到Item
实体 - 顺便说一下创建关系。它看起来像是在模型中建立关系的正确方法。你当前的模特看起来很奇怪。
答案 1 :(得分:1)
感谢所有回复。这是我的问题的解决方案。
public class BinCard
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public int ItemId { get; set; }
[Required]
public DateTime Date { get; set; }
[Required]
public double Qty { get; set; }
public virtual Drug Drug { get; set; }
}
public class Item
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public ObservableCollection<BinCard> BinCard { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Drug>()
.HasRequired(s => s.Stock)
.WithRequiredPrincipal(s => s.Drug);
}