2

私は以下のような同様の構造を持っています。

public class Price
{
   public decimal Amount {get; set;}
   public string Currency {get; set;}
}

public class Product : BaseEntity
{
   public int Id {get; set;}
   public string Name {get; set;}
   public Price Price {get; set;}
}

Price をそのプロパティに分解する Product テーブルがデータベースに必要です。例えば;

**ProductTable**
--Id
--Name
--Amount
--Currency

次に、データベースから製品を取得すると、自動的に金額通貨製品の価格オブジェクトにバインドされます。Entity Framework Code First を使用してこの構造を作成するにはどうすればよいですか?

4

2 に答える 2

4

Price プロパティは仮想である必要があり、機能する必要があります。

public class Product
{
   public int Id {get; set;}
   public string Name {get; set;}
   public virtual Price Price {get; set;}
}

編集:

クラスのオーバーライドOnModelCreatingメソッドでカスタム列名を指定できます。DbContext

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
 {
    modelBuilder.Entity<Product>().Property(u => u.Price.Amount)
                                       .HasColumnName("Amount");
 }
于 2013-04-13T11:15:57.863 に答える
2

@Miłosz Wierzbicki による回答は、別のテーブルを作成しますPrice

しかし、あなたの場合、そのために別のテーブルが必要だとは思わないので、価格を複合タイプとして定義すると、データベースフィールド名に「価格」が追加された同じテーブル内で同じになり、データを取得または保存するときに名前も自動的にマップされます

[ComplexType]
public class Price
{
   public decimal Amount {get; set;}
   public string Currency {get; set;}
}

[ComplexType]について詳しく読む

于 2013-04-13T11:18:34.927 に答える