これはアンサーモデルですか?おそらくタイプ質問プロパティの質問もあります。 Question_QuestionIdプロパティが[missing] Answer.Questionプロパティの外部キープロパティであることをEFに(属性/マッピングを使用して)伝える必要があります。
EDIT
Question.Answers回答テーブル上の質問への参照があることが必要です。 EFはAnswer.Question_QuestionIdプロパティと競合するAnswerテーブルにQuestion_QuestionIdという名前のフィールドを作成します(このEFでは新しいフィールドも作成されます)。
この新しいフィールドの名前はQuestion_QuestionId1です。 これはDDL文で見ることができます(EFは、関係のためにフィールドQuestion_QuestionId1のインデックスを作成します。また、関連フィールドはNULL可能です)。
ExecuteNonQuery==========
CREATE TABLE [Answers] (
[AnswerId] int not null identity(1,1)
, [AnswerText] text null
, [Question_QuestionId] int not null
, [Question_QuestionId1] int null
);
ALTER TABLE [Answers] ADD CONSTRAINT [PK_Answers_a5cb86ad] PRIMARY KEY ([AnswerId])
ExecuteNonQuery==========
CREATE TABLE [Questions] (
[QuestionId] int not null identity(1,1)
, [QuestionText] text null
, [CorrectAnswer_AnswerId] int null
);
ALTER TABLE [Questions] ADD CONSTRAINT [PK_Questions_a5cb86ad] PRIMARY KEY ([QuestionId])
ExecuteNonQuery==========
CREATE INDEX [IX_Question_QuestionId1] ON [Answers] ([Question_QuestionId1])
ExecuteNonQuery==========
CREATE INDEX [IX_CorrectAnswer_AnswerId] ON [Questions] ([CorrectAnswer_AnswerId])
奇妙なことは、EF 6.1.3ではクエリが正常に動作していることです。
とにかく、私は
すなわち、この場合の最善の修正がモデルを修正することだと思い
public class Answer
{
[Key]
public int AnswerId { get; set; }
public string AnswerText { get; set; }
//public int Question_QuestionId { get; set; }
public virtual Question Question { get; set; }
}
public class Question
{
[Key]
public int QuestionId { get; set; }
public string QuestionText { get; set; }
public virtual Answer CorrectAnswer { get; set; }
public virtual List<Answer> Answers { get; set; }
}
class Context : DbContext
{
public Context(DbConnection connection)
: base(connection, false)
{
}
public DbSet<Answer> Answers { get; set; }
public DbSet<Question> Questions { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Question>()
.HasMany(q => q.Answers)
.WithOptional(x => x.Question);
base.OnModelCreating(modelBuilder);
}
}
問合せは、質問モデルが同様に関連するかもしれない
var answers = context.Answers.Where(x => x.Question.QuestionId == selectedQuestion.Question.QuestionId).ToList();
になります。 – DevilSuichiro
あなたのレビューにQuestionモデルを追加しました。 –