1

これは、コードファーストアプローチを採用した最新のエンティティフレームワークです。1人の顧客が複数のプロパティを持つことができます。

public class Customer
{
    [Key]
    public int Id { get; set; }
    public virtual List<CustomerToPropertyMapping> PropertyIds { get; set; }
}   

[Table("CustomerToProperty")]
public class CustomerToPropertyMapping
{
    [Key, Column(Order = 1)]
    public int PropertyId { get; set; }
}

データをロードすると、すべてが正常に機能します。顧客を救おうとすると、

関係の外部キープロパティを公開していないエンティティの保存中にエラーが発生しました。単一のエンティティを例外のソースとして識別できないため、EntityEntriesプロパティはnullを返します。保存中の例外の処理は、エンティティタイプの外部キープロパティを公開することで簡単にできます。詳細については、InnerExceptionを参照してください。

私が持っていても同じことが起こります

[Key, Column(Order = 0)]
CustomerId 

CustomerToPropertyMappingクラス内。

マップ先のオブジェクトではなく、マッピングを取得する正しい方法は何ですか?

4

2 に答える 2

0

維持する

[Key, Column(Order = 0)]
CustomerId

CustomerToPropertyMapping変化します

public virtual List<CustomerToPropertyMapping> PropertyIds { get; set; }

[ForeignKey("CustomerId")]
public virtual List<CustomerToPropertyMapping> PropertyIds { get; set; }

私の問題を解決しました。

于 2012-10-23T15:04:45.850 に答える
0

顧客クラスに主キーを設定する必要があります

[Table("CUstomerTable")]
public class Customer
{
    [Key]
    public int Id { get; set; }
    public virtual List<CustomerToPropertyMapping> PropertyIds { get; set; }
}   

[Table("CustomerToProperty")]
public class CustomerToPropertyMapping
{
    [Key]
    public int PropertyId { get; set; }
    [Column("Customer_ID")]
    public long CustomerId{ get; set; }
      [ForeignKey("CustomerId")]
    public Customer Customer{ get; set; } 
}
于 2012-10-23T13:25:19.850 に答える