2016-03-24 2 views
0

誰かが私にそれを伝えることはできますか?そして、このコードで2回の使用を避ける方法なら、エンティティフレームワーク - DbContext SaveChanges()

 Message m = new Message 
     { 
      Title = message.Title, 
      Body = message.Body, 
      Date = DateTime.Now 
     }; 

     _context.Messages.Add(m); 
     _context.SaveChanges(); 

     UserMessage messageToUser = new UserMessage 
     { 
      MessageID = m.ID, 
      ProductID = message.ProductID, 
      SenderID = message.SenderID, 
      RecieverID = reciever.Id 
     }; 

     _context.UserMessages.Add(messageToUser); 
     _context.SaveChanges(); 

これは私のエンティティがあなたのUserMessageクラスで

public class UserMessage 
{ 
    public int ID { get; set; } 
    public string SenderID { get; set; } 
    public string RecieverID { get; set; } 
    public int? ProductID { get; set; } 
    public int MessageID { get; set; } 

    public User Sender { get; set; } 
    public User Reciever { get; set; } 
    public Product Product { get; set; } 
    public Message Message { get; set; } 
} 

public class Message 
    { 
     public int ID { get; set; } 
     public string Title { get; set; } 
     public string Body { get; set; } 
     public DateTime Date { get; set; } 
    } 

答えて

0

どのように見えるかである外部キーがまだ知られていないとして、あなたは、代わりに外部キーの参照を設定します。あなたのコードで

、それは意味します:ものだった

Message m = new Message 
    { 
     Title = message.Title, 
     Body = message.Body, 
     Date = DateTime.Now 
    }; 

    _context.Messages.Add(m); 

    UserMessage messageToUser = new UserMessage 
    { 
     ProductID = message.ProductID, 
     SenderID = message.SenderID, 
     RecieverID = reciever.Id, 
     Message = m 
    }; 

    _context.UserMessages.Add(messageToUser); 
    _context.SaveChanges(); 
+0

感謝を! – IvanD

+0

EF永続性は無意味ではありません。つまり、変更されたすべてのエンティティは、正しい順序でコミットポイントに保存されますか?ちょうど興味深いことに、NHibernateを使って作業するので、UnitOfWorkの終わり(通常はFlush()またはCommit())を除いて、単一オブジェクトのDBへの挿入/更新を明示的に呼び出そうとするのはよくある間違いです。 NHibのSave(オブジェクト)メソッドは、実際には永続コンテキスト(EF Add()など)にオブジェクトをアタッチするだけで、すぐに挿入/更新を呼び出すことはありません。 IDを設定して関連オブジェクトを追加することは、NHibでは間違っています。この答えで説明するように追加する必要があります。 –

関連する問題