2011-08-16 15 views
7

私は現在Entity Framework 4を2011年6月のCTP(enumサポート用)で使用していますが、永続クラスに構造体を埋め込むのに問題があります。私は(特に)InclusionCriteria構造体フィールドとPatientクラスを持っている:構造体のフィールドを含むクラスと同じテーブルに格納することは可能ですか?

public class Patient 
{ 
    public InclusionCriteria inclusionCriteria 
    { 
     get; 
     set; 
    } 

    ... 
} 

構造体は、原始的な分野で、非常に簡単です:、それは明らかになっ

public struct InclusionCriteria 
{ 
    public bool withStemi 
    { 
     get; 
     set; 
    } 

    ... 
} 

システムを実行した後、その構造体のデータは保存されていませんでした。生成されたテーブルを見ると、構造体はそこに存在しません(外部キーまたはそうでなければ)。構造体のフィールドをPatientテーブルに配置したいので、基準としてDbSetを作成していません。私は潜在的にこれを行うことができますが、私はむしろ同じテーブルにすべてそれを保持したいと思います。これはエンティティフレームワークで可能ですか?

答えて

7

構造体はサポートされていません。クラスを使用し、それを複合型としてマップする必要があります。コードを最初に使用している場合は、クラスを作成してデータベースを再作成することができます。運が良ければ、自動的に複合型としてマップされます。あなたはEDMXはそれを使用する複合型とthis articleを作成するためにthis articleに従って使用している場合

modelBuilder.ComplexType<InclusionCriteria>(); 

[ComplexType] 
public class InclusionCriteria { ... } 

または流暢API:そうしないと、データアノテーションを使用することができます。

Btw。 CTP 2011は、実際の開発ではなく、新機能のテスト専用です。そのコンテンツは次のCTPで変更される可能性があります。

+0

ありがとうございました!明らかに、私が探していたキーワードは複雑なタイプでした。私はそれが決して 'null'ではないことを保証するためにstrcutを使用していましたが、私は代わりに通常のメソッドを使用すると思います。 – 101100

関連する問題