Произошла ошибка при обновлении записи. Подробнее см. Внутреннее исключение. - Linq to Entity
осматривался, и я просто не могу понять, что не так.
В настоящее время я пытаюсь обновить свою базу данных с новым рекордом, когда когда-либо игрок умирает. Но он продолжает бросать это исключение на меня, независимо от того, что я решаю попытаться сохранить.
код:
HighScore hs = new HighScore();
var id = from i in db.HighScores
orderby i.ID descending
select i;
int newId = 0;
if (id.Count() == 0)
{
newId = 1;
}
else
{
newId = id.First().ID + 1;
}
hs.ID = 6; //I just hardcoded in 6 to make sure i wasent because of the newId //thing, and i have checked if theres already something on the sixths spot as well.
hs.UserHighscore = 100;
hs.HighscoreUsername = "test";
hs.GameID = 1;
db.HighScores.AddObject(hs);
db.SaveChanges();
Я проверял, снова и снова, и я просто не могу понять, в чем проблема.
любая помощь будет appriciated.
в исключение:
System.Data.UpdateException was unhandled
Message=An error occurred while updating the entries. See the inner exception for details.
Source=System.Data.Entity
StackTrace:
at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
at System.Data.Objects.ObjectContext.SaveChanges()
at MatematikSpilMenu.SaveBunniesSceen.SaveHighscore() in MatematikSpilMenuSaveBunniesSceen.cs:line 173
at MatematikSpilMenu.SaveBunniesSceen.Update(GameTime gameTime, Boolean otherScreenIsActive, Boolean coveredByOtherScreens) in C:UsersEtarnalazure-Aliendocumentsvisual studio 2010ProjectsMatematikSpilMenuMatematikSpilMenuMatematikSpilMenuSaveBunniesSceen.cs:line 110
at MatematikSpilMenu.ScreenManager.Update(GameTime gameTime) in MatematikSpilMenuScreenManager.cs:line 101
at Microsoft.Xna.Framework.Game.Update(GameTime gameTime)
at Microsoft.Xna.Framework.Game.Tick()
at Microsoft.Xna.Framework.Game.HostIdle(Object sender, EventArgs e)
at Microsoft.Xna.Framework.GameHost.OnIdle()
at Microsoft.Xna.Framework.WindowsGameHost.RunOneFrame()
at Microsoft.Xna.Framework.WindowsGameHost.ApplicationIdle(Object sender, EventArgs e)
at System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FDoIdle(Int32 grfidlef)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Microsoft.Xna.Framework.WindowsGameHost.Run()
at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
at Microsoft.Xna.Framework.Game.Run()
at MatematikSpilMenu.Program.Main() in MatematikSpilMenuGame1.cs:line 120
InnerException: System.Data.EntityCommandCompilationException
Message=An error occurred while preparing the command definition. See the inner exception for details.
Source=System.Data.Entity
StackTrace:
at System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree)
at System.Data.Mapping.Update.Internal.DynamicUpdateCommand.CreateCommand(UpdateTranslator translator, Dictionary`2 identifierValues)
at System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)
at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
InnerException: System.NotSupportedException
Message=Server-generated keys and server-generated values are not supported by SQL Server Compact.
Source=System.Data.SqlServerCe.Entity
StackTrace:
at System.Data.SqlServerCe.SqlGen.DmlSqlGenerator.GenerateReturningSql(StringBuilder commandText, DbModificationCommandTree tree, ExpressionTranslator translator, DbExpression returning)
at System.Data.SqlServerCe.SqlGen.DmlSqlGenerator.GenerateInsertSql(DbInsertCommandTree tree, List`1& parameters, Boolean isLocalProvider)
at System.Data.SqlServerCe.SqlGen.SqlGenerator.GenerateSql(DbCommandTree tree, List`1& parameters, CommandType& commandType, Boolean isLocalProvider)
at System.Data.SqlServerCe.SqlCeProviderServices.CreateCommand(DbProviderManifest providerManifest, DbCommandTree commandTree)
at System.Data.SqlServerCe.SqlCeProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree)
at System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree)
at System.Data.Common.DbProviderServices.CreateCommand(DbCommandTree commandTree)
at System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree)
InnerException:
6 ответов
Мне кажется, что корень проблем находится на SQL server, который вы используете:
серверные ключи и серверные значения не поддерживаются SQL Server Compact.
вы пытаетесь использовать идентификатор автоматического приращения в версии SQL server Compact? Я не помню хорошо, но, возможно, это невозможно с этой версией SQL. Я предлагаю вам сначала проверить это.
Ну из моего опыта, который обычно запускается ошибкой db, в моем случае это был триггер, связанный с таблицей, которая терпела неудачу и бросала корневое исключение. В вашем случае, однако, кажется, что вы ошибочно пытаетесь определить id вручную при использовании поля с автоматическим номером (identity).
нашел решение, кажется, что его база данных, которая может ошибиться, если в использовании слишком много мест (это только мое предположение). В любом случае, создание новой таблицы, а затем добавление материала, казалось, исправило ее (не использовал Identity.)
в моем случае после включения базы данных таблицы первичный ключ к столбцу auto_ink проблема исчезла.
серверные ключи не работают хорошо, поэтому идите и проверьте, что база данных может быть ur база данных primery key-это автоматически сгенерированный ключ, поэтому идите и попробуйте вставить данные вручную