Что я могу сделать, чтобы устранить исключение «Строка не найдена или изменена» в LINQ to SQL в базе данных SQL Server Compact Edition?
Во-первых, полезно узнать, в linq-query-syntax чем проблема. Решение с поиском linq-to-sql в Google должно помочь, вы .net можете регистрировать детали dotnet (таблица, столбец, старое dot-net значение, новое значение) о .net-framework конфликте, чтобы найти лучшее sql-to-linq решение для разрешения конфликта .net-framework позже:
public class ChangeConflictExceptionWithDetails : ChangeConflictException
{
public ChangeConflictExceptionWithDetails(ChangeConflictException inner, DataContext context)
: base(inner.Message + " " + GetChangeConflictExceptionDetailString(context))
{
}
///
/// Code from following link
/// https://ittecture.wordpress.com/2008/10/17/tip-of-the-day-3/
///
///
///
static string GetChangeConflictExceptionDetailString(DataContext context)
{
StringBuilder sb = new StringBuilder();
foreach (ObjectChangeConflict changeConflict in context.ChangeConflicts)
{
System.Data.Linq.Mapping.MetaTable metatable = context.Mapping.GetTable(changeConflict.Object.GetType());
sb.AppendFormat("Table name: {0}", metatable.TableName);
sb.AppendLine();
foreach (MemberChangeConflict col in changeConflict.MemberConflicts)
{
sb.AppendFormat("Column name : {0}", col.Member.Name);
sb.AppendLine();
sb.AppendFormat("Original value : {0}", col.OriginalValue.ToString());
sb.AppendLine();
sb.AppendFormat("Current value : {0}", col.CurrentValue.ToString());
sb.AppendLine();
sb.AppendFormat("Database value : {0}", col.DatabaseValue.ToString());
sb.AppendLine();
sb.AppendLine();
}
}
return sb.ToString();
}
}
Создайте помощника dot-net для упаковки ваших sumbitChanges:
public static class DataContextExtensions
{
public static void SubmitChangesWithDetailException(this DataContext dataContext)
{
try
{
dataContext.SubmitChanges();
}
catch (ChangeConflictException ex)
{
throw new ChangeConflictExceptionWithDetails(ex, dataContext);
}
}
}
Затем dotnet вызовите код отправки изменений:
Datamodel.SubmitChangesWithDetailException();
Наконец, зарегистрируйте .net-framework исключение в вашем глобальном .net обработчике исключений:
protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
//TODO
}
.net
linq
linq-to-sql
Что я могу сделать, чтобы устранить исключение «Строка не найдена или изменена» в LINQ to SQL в базе данных SQL Server Compact Edition?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.