2012-03-25 15 views
1

私は最初にコードを使用してEFを学習しようとしていますが、このメソッドを使用して正しく設計する方法はわかりません。私EFコードの最初のテーブルの関係

私のクラスは、私がStockUnitOfMeasurePurchaseUnitOfMeasureが外部キーであることをしたい、この

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; } 
} 

のように見えます助けてください。

は、ここで彼のサンプルデータを、私はIdでFKのプロパティをサフィックスしている明快さと規則について

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

です。これらの名前をスイートに変更することができます。あなたの迅速な答えを

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); 
    } 
} 
+0

多くのおかげで、しかし、私はこのエラーが発生しました{「参照関係が許可されていない、循環参照になります。[制約名= Item_PurchaseUnitOfMeasure]」} – samantha07

+0

'.WillCascadeOnDeleteを設定samantha07 @ (true) 'を' .WillCascadeOnDelete(false) 'に設定します。 – Eranga

関連する問題