Linq2sql не обновляет изменения
-
23-12-2019 - |
Вопрос
Я использую 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();
}
.