Fehler beim aktualisieren der Einträge. Finden Sie unter der inneren Ausnahme für details. - Linq to Entity
war auf der Suche um und ich kann nicht scheinen, um herauszufinden, was falsch ist.
Derzeit bin ich versucht, zu aktualisieren meiner Datenbank mit einem neuen highscore immer wenn der Spieler stirbt. Aber es hält werfen, die Ausnahme bei mir, egal was ich wählen, um zu versuchen und sparen.
Code:
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();
Habe ich überprüft, wieder und wieder, und ich einfach nicht scheinen, um herauszufinden, was das problem ist.
Jede Hilfe wäre appriciated.
Ausnahme:
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 MatematikSpilMenu\SaveBunniesSceen.cs:line 173
at MatematikSpilMenu.SaveBunniesSceen.Update(GameTime gameTime, Boolean otherScreenIsActive, Boolean coveredByOtherScreens) in C:\Users\Etarnalazure-Alien\documents\visual studio 2010\Projects\MatematikSpilMenu\MatematikSpilMenu\MatematikSpilMenu\SaveBunniesSceen.cs:line 110
at MatematikSpilMenu.ScreenManager.Update(GameTime gameTime) in MatematikSpilMenu\ScreenManager.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 MatematikSpilMenu\Game1.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:
Wäre einfacher, wenn wir haben könnte, die Botschaft von der tatsächlichen inneren Ausnahme... ? Was ist GameID ? ein Fremdschlüssel ? ist es ein Spiel mit der ID 1 ?
GameID ist die ID, die ich verwenden, um ziehen Sie die entsprechende highscore für das entsprechende Spiel. GameID = 1 wird verwendet, um dem Spiel zu sagen, wo die Highscore sollte herausgezogen.
Ich werde aber in den Griff bekommen, der die Innere Ausnahme
Ob Sie geprüft haben, dass die HIghScore-Tabelle ist null, oder nicht?
Kamal, sorry, aber ich habe nicht verstanden, was du wo versucht zu sagen =/ Könntest du es anders formulieren?
GameID ist die ID, die ich verwenden, um ziehen Sie die entsprechende highscore für das entsprechende Spiel. GameID = 1 wird verwendet, um dem Spiel zu sagen, wo die Highscore sollte herausgezogen.
Ich werde aber in den Griff bekommen, der die Innere Ausnahme
Ob Sie geprüft haben, dass die HIghScore-Tabelle ist null, oder nicht?
Kamal, sorry, aber ich habe nicht verstanden, was du wo versucht zu sagen =/ Könntest du es anders formulieren?
InformationsquelleAutor Etarnalazure | 2012-06-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es mir, dass die Wurzel der Probleme liegt auf dem SQL server, den Sie verwenden:
Versuchen Sie zu verwenden ein auto-increment-ID für SQL server Compact-version? Ich bin nicht gut erinnern, aber vielleicht ist das nicht möglich, die SQL-version. Ich schlage vor, Sie überprüfen zuerst.
Ich verstehe dich nicht genau. Du meinst der gleiche code ausgeführt wurde einmal vor? Wenn es so ist, als die, die Sie haben zu prüfen, durch welche änderungen habt Ihr da. Von der Ausnahme-Meldung, es scheint, dass das problem mit der Datenbank. Hast du chang die Datenbank dahinter?
Habe gerade versucht zu entfernen Auto-Inkrement, die auf die ID aus, gab mir noch den gleichen Fehler.
Ist es nicht möglich, dass Ihr 'db.HighScores' - Objekt versucht, behandeln Sie es als Identität noch?
I dont think so, denn ich musste es löschen und wieder einsetzen, da hielt er mir Fehler, würden screenshots helfen?
InformationsquelleAutor Csaba Benko
Gut aus meiner Erfahrung, ist in der Regel ausgelöst durch einen db Fehler, in meinem Fall war es ein trigger im Zusammenhang mit der Tabelle, war ein Fehlschlag und werfen die Wurzel Ausnahme. In deinem Fall jedoch scheint es, dass Sie versehentlich versuchen, zu definieren, die id manuell bei Verwendung eines auto-numeriert (Identität) Feld.
InformationsquelleAutor Ricardo Camacho
Die Lösung gefunden, es scheint, dass Ihr die Datenbank, Fehler, wenn in zu viele stellen (Das ist mir einfach zu erraten). So oder so, eine neue Tabelle erstellen und dann hinzufügen, dass Zeug es schien, um es zu beheben (Habe nicht mit der Identität.)
InformationsquelleAutor Etarnalazure
In meinem Fall nach dem einschalten des Datenbank-Tabelle den Primärschlüssel auf ein auto_ink Spalte das problem verschwunden.
InformationsquelleAutor Massimo
Server-generierten Schlüssel sind nicht gut abschneiden, so gehen Sie und überprüfen Sie die Datenbank kann in der ur-Datenbank primery key ist automatisch generierter Schlüssel, so gehen und versuchen, zum einfügen von Daten manuell
InformationsquelleAutor Abrham
Überprüfen Sie auch Beziehungen zwischen Tabellen.
InformationsquelleAutor Rustam Irzaev