EF код первой таблицы отношений - PullRequest
1 голос
/ 25 марта 2012

Сначала я пытаюсь изучить 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

1 Ответ

1 голос
/ 25 марта 2012

Для ясности и условностей я добавил суффикс свойства 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);
    }
}
...