0

Linq2Sql を使用して行データを更新していますが、値を変更すると、以前にこの問題を調査したところ、次の考えられる理由が見つかりました。

  • エンティティは変更されていないため、更新は発生しません
  • エンティティに主キーがありませんが、更新は行われません

私の状況では、これらのどれも当てはまりません。

クラスとテーブルに PK があります。データ コンテキストの GetChangeSet() は、少なくとも 1 つの更新があることを示します。

私が見る唯一の問題は、データ コンテキスト ログから、更新ステートメントが生成されないことです。

問題が何であるかを知っている人はいますか。

コードのサンプルを次に示します。

using(context db=new context())
{
 db.Log=new System.IO.StreamWriter(sample){AutFlush=true};
 MyObject obj=db.MyTable.SingleOrDefault(row=>Email==email);
 if(obj!=null)
 {
   obj.FirstName=firstName;
   obj.LastName=lastName;
   System.Data.Linq.ChangeSet set=db.GetChangeSet();
   db.SubmitChanges();
 }
}
4

2 に答える 2

0

問題が見つかりました。興味のある方へ。

以前に検証ロジックを DataContext クラスに追加しました。たとえば、テーブル名が「Product」の場合、部分メソッド「UpdateProduct」に検証を追加しました。

ただし、データベースへの変更を続行するように LINQ to SQL に指示することを怠っていました。したがって、コードを続行しなかったため、検証してから何もしません。

それを必要とする人のために、適切に行うために、ロジックが渡されたときに「ExecuteDynamicUpdate」を呼び出す必要がありました。

更新されたソリューションのサンプル:

partial void UpdateObj(Obj instance)
{
  if(instance.Field==null)
  {
     thow new NotImplementedException();
  }
  //Added missing code continuation
  this.ExecuteDynamicUpdate(instance);
}

ScottGu ブログは私を大いに助けてくれました... http://weblogs.asp.net/scottgu/linq-to-sql-part-4-updating-our-database

于 2014-08-01T14:43:11.810 に答える
0

これを試すことができます

if(obj!=null)
 {
   obj.FirstName=firstName;
   obj.LastName=lastName;
   db.MyTable.InsertOnSubmit(obj);
   db.SubmitChanges();

   System.Data.Linq.ChangeSet set = db.GetChangeSet();
 }
于 2014-08-01T11:39:07.283 に答える