2

私は C# とプログラミング全般に慣れていないので、ご容赦ください。

プリンシパル クラスと同じテーブルにある複合型を定義しようとしています。基本的に、これは古き良きユーザーとアドレスの例です。

public class Customer
{
    [Key]
    public int customerId { get; set; }

    //some attributes

    public string street { get; set; }
    public string city { get; set; }
    public string province { get; set; }
    public string country { get; set; }
    public string postal { get; set; }
}

そこで、アドレス情報を独自のクラスに切り分けようとします。

public class Customer
{
    [Key]
    public int customerId { get; set; }

    //some attributes
    public Address address { get; set; }
}

[ComplexType]
public class Address
{
    public string street { get; set; }
    public string city { get; set; }
    public string province { get; set; }
    public string country { get; set; }
    public string postal { get; set; }
}

コンパイル エラーは発生せず、Customer モデルにアクセスするビューをロードすると、フィールド セット エラーで不明な列が発生します。

「フィールド リスト」の不明な列「Extent1.address_street」

私は基本的にこの例に従いました: http://weblogs.asp.net/manavi/archive/2010/12/11/entity-association-mapping-with-code-first-part-1-one-to-one-associations. aspx

不足しているものや、EF5 と異なるものはありますか?

4

1 に答える 1

3

デフォルトでは、EFは{complextypename_propertyname}の形式の複合型のプロパティの列を想定しています。テーブルを手動で作成し、列の名前を変えた場合、不一致が発生します。それに応じて列の名前を変更して(つまり、streetからaddress_streetに)、機能するかどうか試してみてください。または、複合型のプロパティに属性を追加して、EFに、規則ではなく指定した名前(たとえば、ストリートプロパティの[Column( "street")])を使用するように指示できる必要があります。

于 2012-09-26T14:37:20.120 に答える