2012-04-15 3 views
1

私は以下のような2つのクラスを持っています。Entity Frameworkの外部キーが入力されたエンティティとして残っています

public class Quest 
{ 
    public int ID{ get;set; } 

    public string Objective 
    { 
     get; 
     set; 
    } 

    public DateTime StartDate 
    { 
     get; 
     set; 
    } 

    public string Story 
    { 
     get; 
     set; 
    } 

    public virtual QuestLocation Location 
    { 
     get; 
     set; 
    } 
} 
    public class QuestLocation 
{ 
    public DateTime CreateDate 
    { 
     get; 
     set; 
    } 

    public int ID 
    { 
     get; 
     set; 
    } 

    public double Latitude 
    { 
     get; 
     set; 
    } 

    public double Longitude 
    { 
     get; 
     set; 
    } 

    public virtual Quest Quest 
    { 
     get; 
     set; 
    } 

} 

私はQuestの新しいインスタンスを作成した後、単にQuestLocationクラスの新しいインスタンスを作成するだけで、Questのlocationプロパティを設定しました。

Question q = new Question(); 
    q.StartDate = DateTime.Now; 
    q.Objective = "foo"; 
    q.Location = new QuestLocation(){ CreateDate = DateTime.Now, Latitude = 10 , Longitude = 10 }; 

    And add newly created Quest into Database : 
    DataContext.Quests.Add(q); 
    DataContext.SaveChanges(); 

私のデータベースを見ると、これまでに初期化したすべてのオブジェクトが作成されます。しかし、QuestLocationの外部キー "Quest_ID"はNULLのままでした。どうすればこの問題を思いつくことができますか?

答えて

0
Question q = new Question(); 
QuestionLocation qL = new QuestLocation(){ CreateDate = DateTime.Now, Latitude = 10 , Longitude = 10 }; 
q.StartDate = DateTime.Now; 
q.Objective = "foo"; 
q.Location = qL; 

//And add newly created Quest into Database : 
DataContext.QuestLocations.Add(qL); 
DataContext.SaveChanges(); 

DataContext.Quests.Add(q); 
DataContext.SaveChanges(); 
+0

パフォーマンスに問題はありませんか?この場合、オブジェクトを追加するたびに変更を保存しなければならないからです。 – kkocabiyik

+0

最初の 'SaveChanges()'メソッドを省略することができます。私は、その場合パフォーマンスの問題が解決するかもしれないと思います。 – sarwar026

+0

最初のSaveChangesを省略した場合、私のコードとあなたのコードの違いは何ですか?つまり、Quest_IDを設定してQuestLocationオブジェクトインスタンスを自動的にクエストに設定してはいけませんか? – kkocabiyik

0

questlocationオブジェクトにquest_idを設定する必要があります。 データベースで外部キーフィールド(quest_id)をnull以外に設定することをお勧めします。

関連する問題