2016-03-30 22 views
0

Önce Entity Framework kodunu kullanıyorum ve aşağıdaki modeli yapıyorum. Bazı nedenlerden dolayı DB'yi güncelleştirdikten sonra bağlamda modele çağrı yaptığımda, varlık çerçevesi hatalı bir sütun adına sahip bir sorgu oluşturuyor. Bunu denemek ve düzeltmek istiyorum. Veri ek açıklamalarını veya Akıcı API'yi kullanabileceğimi biliyorum, ancak bu neden sütun adının sonunda 1 üretiyor. Bu sütun DB veya modelde değil.Varlık Çerçevesi Kod ile Yanlış Sütun Üretiliyor İlk

Modeli

public class Answer 
{ 
    [Key] 
    public int AnswerId { get; set; } 
    public string AnswerText { get; set; } 
    public int Question_QuestionId { get; set; }  
} 

Bağlam Çağrı

//GetTheAnswers 
var answers = context.Answers.Where(x => x.Question_QuestionId == selectedQuestion.QuestionId).ToList(); 

İstif hatası

{ "Geçersiz sütun adı 'Question_QuestionId1'."}

İşte

inceleme

için soru Modeli olduğunu
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; } 
    public virtual LessonSpecification LessonSpecification { get; set; } 
    public virtual GrammarStandards GrammarStandard { get; set; } 
} 
+0

olacak bu durumda en iyi düzeltme yani

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); } } 

modelini düzeltmek için olduğunu düşünüyorum. – DevilSuichiro

+0

İncelemeniz için Soru modelini ekledim. –

cevap

0

Bunun bir Yanıt modeli olduğundan emin misiniz? Muhtemelen Tip Soru özelliği bir soru da vardır. Sor_QuestionId özelliğinin [eksik] Answer.Question özelliğinin yabancı anahtar özelliği olduğunu EF'ye (öznitelikleri/eşleme kullanarak) söylemeniz gerekir.

DÜZENLEME
Question.Answers Cevap masaya Soruya referans olduğunu gerekiyor. EF, Answer.Question_QuestionId özelliğinizle çakışan Yanıt tablosundaki Question_QuestionId ismiyle bir alan oluşturur (ayrıca bu EF için yeni bir alan oluşturur).
Bu yeni alanın adı, Question_QuestionId1'dir. Bunu, DDL ifadelerine bakarak görebilirsiniz (EF, ilişkiden dolayı indeksi alanın Q_QuestionId1 değerini gösterir, ayrıca ilişki alanı null olur).

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]) 

Tuhaf olan şey, EF 6.1.3 ile sorgunuzun iyi çalışmasıdır.

Neyse, sorgu Soru modeli de ilgili olabilir

var answers = context.Answers.Where(x => x.Question.QuestionId == selectedQuestion.Question.QuestionId).ToList(); 
+0

Bu, Yanıt modelidir. Bunu iki kere kontrol ettim. DB'deki sütun, Question_QuestionId olarak adlandırılmıştır. –

+0

Özellik Question.Answers, EF'nin Cevap tablosunda bir alan oluşturmasını gerektirir. Ama modeliniz ve EF 6.1.3 ile iyi çalışıyor. Neyse daha fazla ayrıntı için cevabı gör. – bubi

+0

Modeli, cevabınıza yazdıklarınız için düzenledim ve bunu bana bulaşmış görünen göç olarak yarattım. Düşüncelerin neler? –

İlgili konular