У меня есть приложение C #, Winforms EF6.База данных - SQL Server Compact 4. На некоторых компьютерах (большинство работает нормально) я получаю исключение «Область данных, переданная системному вызову, слишком мала» при сохранении простого объекта, как показано в коде ниже
public void Add(SimpleObject simpleObject)
{
try
{
using (var db = new MyDbContext())
{
db.SimpleObjects.AddOrUpdate(e => e.Description, simpleObject);
db.SaveChanges();
}
}
catch(Exception ex)
{
_logger.ErrorException("Add", ex);
throw;
}
}
SimpleObject чрезвычайно прост с 2 столбцами ([ID] INT NOT NULL IDENTITY (1,1), [ОПИСАНИЕ] NVARCHAR (4000)).Экземпляры, которые генерируют исключения, имеют в текстовом поле общий текст (ниже 150 символов), которые на большинстве компьютеров обычно сохраняются.Команда AddOrUpdate выдает исключение.
Полные сведения об исключении, зарегистрированные с NLog:
System.Data.Entity.Core.EntityCommandExecutionException: при выполнении определения команды произошла ошибка.Смотрите внутреннее исключение для деталей.---> System.Data.SqlServerCe.SqlCeException: область данных, передаваемая системному вызову, слишком мала.в System.Data.SqlServerCe.SqlCeCommand.ProcessResults (Int32 ч.) в System.Data.SqlServerCe.SqlCeCommand.CompileQueryPlan () в System.Data.SqlServerCe.SqlCeCommand.ExjectSe.Entity.SqlServerCompact.SqlCeMultiCommand.ExecuteReader (поведение CommandBehavior) в System.Data.Entity.Infrastructure.Interception.InternalDispatcher 1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func
3, операция TInterceptionContext interceptionContext, действие 3 executing, Action
3 выполняется) в объекте SystemInata..DbCommandDispatcher.Reader (команда DbCommand, DbCommandInterceptionContext interceptionContext) в System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands (EntityCommand entityCommand, внутреннее исключение объекта.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands (EntityCommand entityCommand, CommandBehavior поведение) в System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute [TResultType] (контекст ObjectContext, параметр ObjectParameterCollectionValues) в System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction [T] (Func * 1011).() в System.Data.Entity.Core.Objects.ObjectQuery 1.GetResults(Nullable
1 forMergeOption) в System.Data.Entity.Core.Objects.ObjectQuery 1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0()
at System.Data.Entity.Internal.LazyEnumerator
1.MoveNext () в System.Linq.Enumerable.SingleOrDefault [TSource] (Набор IEnumerable 1 source)
at System.Data.Entity.Migrations.DbSetMigrationsExtensions.AddOrUpdate[TEntity](DbSet
1, набор IEnumerable 1 identifyingProperties, InternalSet
1 internalSet, TEntity []) в System.Data.Entity.Migrations.DbSetMigrationsExtensions.AddOrUpdate [TEntity] (IDbSet 1 set, Expression
1 identifierExpression, TEntity [] entity)>
Любая помощь будет принята с благодарностью!