エンティティフレームワーク4.1に問題があります。これは、円で回っているようです。私はQuestionテーブルとの1..Mの関係を持つCaseテーブルを持つシンプルなドメインを作成しようとしています。私は次に質問テーブルからIDを共有する継承されたテーブル( '継承された質問')を持っています。Entity Framework 4.1内で継承されたテーブルの問題
var inheritedCase = context.Set<Case<InheritedQuestion>>.First();
InheritedQuestion inheritedQuestion = inheritedCase.Case.Questions.First();
が、これがすべてで可能です:
は、彼らがそのように私のような何かができるためにリンクされている場合と質問とInheritedQuestionクラスを関連付ける私は何をしたいのですか?私は、EFにはジェネリックスに関する制限があると信じています手動でクラスプロパティをマッピングすることでこれを回避できるかどうかは疑問です。
現時点では、私はこれをEF経由で実装することはできません。私は以下に私の問題の根拠を含めました。私は流暢なAPIを介してこれを実装しようとしています。
ケーステーブル
ID(PK)
質問表
CaseId(FK)
QuestionId(PK)
フィールド1質問
ク継承
estionId(FK)
フィールド2
これは私のクラスです。
public class Case<T> where T : Question
{
ICollection<T> Questions {get;set;}
}
public class Question
{
string Field1 {get;set;}
Case<Question> Case {get;set;}
}
public class InheritedQuestion : Question
{
string Field2 {get;set;}
new Case<InheritedQuestion> Case {get;set;}
}
EFは、ここに 'new'修飾子のように/理解していません。 2番目のケースの名前を変更します。 –
@HenkHoltermanそうではありませんが、近いです。 'InheritedQuestion'が' Question'の場合は、 'Case'型のプロパティを持ちます。 'Question'がそのプロパティを持ち、' InheritedQuestion'がそのプロパティを継承している限り、その方法はありません。しかし、 'InheritedQuestion'が書かれているように、それは2つの完全に別々のプロパティ' Case'を持っています。これは意図した振る舞いではありません。これは、EFに適したものにする前に、C#レベルで修正する必要があります。 –
hvd
それは、私が思い出すように、EFはカスタムジェネリック型をまったくサポートしていないので、これはうまくいくとは思わないと思います。 – hvd