EF编码首表关系
本文关键字:关系 编码 EF | 更新日期: 2023-09-27 18:29:06
我正在尝试首先使用代码学习EF,我不知道如何使用这种方法进行正确的设计。请帮我
我的课看起来像这个
public class Item
{
public int ItemID{ get; set; }
public string Name { get; set; }
public int StockUnitOfMeasure{ get; set; }
public int PurchaseUnitOfMeasure{ get; set; }
}
public class UnitOfMeasure
{
public int UnitOfMeasureID { get; set; }
public string MeasureName { get; set; }
}
我想把StockUnitOfMeasure
和PurchaseUnitOfMeasure
作为外键。
这是他的样本数据
ItemID Name StockUnitOfMeasure PurchaseUnitOfMeasure
1 Apples 2 1
2 Milk 3 4
UnitOfMeasureID MeasureName
1 Piece
2 Dozen
3 Box
4 Packs
meaning:
apples are stocked at the warehouse by DOZEN, but will be purchased per PIECE
Milks are stocked at the warehouse by BOX, but will be purchased per PACK
为了清晰和惯例,我在FK属性后面加了Id
。您可以重命名这些以满足您的需要。
public class Item
{
public int ItemID { get; set; }
public string Name { get; set; }
public int StockUnitOfMeasureId { get; set; }
public UnitOfMeasure StockUnitOfMeasure { get; set; }
public int PurchaseUnitOfMeasureId { get; set; }
public UnitOfMeasure PurchaseUnitOfMeasure { get; set; }
}
class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Item>().HasRequired(x => x.StockUnitOfMeasure)
.WithMany()
.HasForeignKey(x => x.StockUnitOfMeasureId).WillCascadeOnDelete(true);
modelBuilder.Entity<Item>().HasRequired(x => x.PurchaseUnitOfMeasure)
.WithMany()
.HasForeignKey(x => x.PurchaseUnitOfMeasureId).WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
}
}