Вопрос

Я использую 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();
 }
}
.

Это было полезно?

Решение 2

Я нашел проблему.Для всех заинтересованных.

I Previoulsy Добавлена логика проверки моим DataContext CLAS. Например, если мое имя таблицы - это «продукт», я добавил валидацию к частичному методу «UPDATEPRODUCT».

Однако я пренебрегал SQL Linq к SQL, чтобы продолжить изменения в базе данных.Таким образом, он подтвердит, что ничего не потому что я не продолжил код.

Для тех, кому это нужно, чтобы сделать это правильно, мне нужно было назвать «excedynamicupdate», когда логика прошла.

Образец обновленного решения:

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

Блог Scottgu помог мне много ... http://weblogs.ass.asp.net/scottgu/linq-to-sql-part-4-updating-our-database

Другие советы

Вы можете попробовать это

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

   System.Data.Linq.ChangeSet set = db.GetChangeSet();
 }
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top