Ich möchte die Sortierung der gesamten Datenbank, die mit dem ef-Code erstellt wurde, zuerst ändern. Ich versuche dies durch Ausführen eines Skripts nach der Erstellung zu tun, aber es funktioniert nicht,
%Vor%Ist es möglich, die Kollatierung vor dem Erstellen der Datenbank festzulegen?
Das ist die Ausnahme, die ich bekomme:
Das Zurücksetzen der Verbindung führt zu einem anderen Status als das ursprüngliche Anmeldung. Die Anmeldung schlägt fehl. Anmeldung fehlgeschlagen für Benutzer 'afi'. Ein schwerwiegender Fehler aufgetreten auf dem aktuellen Befehl. Die Ergebnisse sollten, falls vorhanden, sein verworfen.
[SqlException (0x80131904): Das Zurücksetzen der Verbindung führt zu a anderer Zustand als die anfängliche Anmeldung. Die Anmeldung schlägt fehl.
Anmeldung fehlgeschlagen für Benutzer 'afi'. Ein schwerwiegender Fehler ist bei der aktuellen aufgetreten Befehl. Die Ergebnisse, falls vorhanden, sollten verworfen werden.]
System.Data.SqlClient.SqlConnection.OnError (SqlException Ausnahme, Boolean breakConnection, Action'1 wrapCloseInAction) +388
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +688
System.Data.SqlClient.TdsParser.TryRun (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean & amp; dataReady) +4403
System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +84
System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest (Byte [] Puffer, TransactionManagerRequestType Anfrage, String transactionName, TransactionManagerIsolationLevel isoLevel, Int32-Zeitüberschreitung, SqlInternalTransaction-Transaktion, TdsParserStateObject stateObj, Boolean isDelegateControlRequest) +1370
System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon (Transaktionsanforderung transactionRequest, String transactionName, IsolationLevel iso, SqlInternalTransaction internalTransaction, Boolean isDelegateControlRequest) +674
System.Data.SqlClient.SqlInternalConnection.BeginSqlTransaction (IsolationLevel iso, String transactionName) +547
System.Data.SqlClient.SqlInternalConnection.BeginTransaction (IsolationLevel iso) +18
System.Data.SqlClient.SqlConnection.BeginDbTransaction (IsolationLevel isolationLevel) +211
System.Data.EntityClient.EntityConnection.BeginDbTransaction (IsolationLevel isolationLevel) +155[EntityException: Beim Starten einer Transaktion ist ein Fehler aufgetreten die Providerverbindung. Siehe die innere Ausnahme für Details.]
System.Data.EntityClient.EntityConnection.BeginDbTransaction (IsolationLevel isolationLevel) +4298876
System.Data.EntityClient.EntityConnection.BeginTransaction () +10
System.Data.Objects.ObjectContext.SaveChanges (SaveOptions-Optionen) +538 System.Data.Entity.Internal.InternalContext.SaveChanges () +218 Afi.Domain.Storage.AfiDbContext.SaveChanges () in c: \ inetpub \ wwwroot \ afi \ src \ Domäne \ Speicher \ AfiDbContext.cs: 190
Afi.Domain.Storage.EntitySession.Commit () in c: \ inetpub \ wwwroot \ afi \ src \ Domäne \ Speicher \ EntitySession.cs: 54
Afi.Web.Controllers.CIController.Seed (Boolean excludeSomeData) in c: \ inetpub \ wwwroot \ afi \ src \ Web \ Controller \ CIController.cs: 263
Afi.Web.Controllers.CIController.Index () in c: \ inetpub \ wwwroot \ afi \ src \ Web \ Controller \ CIController.cs: 89
lambda_method (Closure, ControllerBase, Object []) +81
System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary2 parameters) +261
2 Parameter) +39
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
System.Web.Mvc.Async. & Lt; & gt; c_ DisplayClass42.b _41 () +34 System.Web.Mvc.Async. & Lt; & gt; & gt; c_ DisplayClass39.b _33 () +124 System.Web.Mvc.Async. & Lt; & gt; c_ DisplayClass4f.b _49 () +837307 System.Web.Mvc.Async. & Lt; & gt; & gt; c_ DisplayClass4f.b _49 () +837307 System.Web.Mvc.Async. & Lt; & gt; & gt; c_ DisplayClass37.b _36 (IAsyncResult asyncResult) +15
System.Web.Mvc.Async. & Lt; & gt; c_ DisplayClass2a.b _20 () +33 System.Web.Mvc.Async. & Lt; & gt; & gt; c_ DisplayClass25.b _22 (IAsyncResult asyncResult) +837892
System.Web.Mvc. & Lt; & gt; c_ DisplayClass1d.b _18 (IAsyncResult asyncResult) +28
System.Web.Mvc.Async. & Lt; & gt; c_ DisplayClass4.b _3 (IAsyncResult ar) +15 System.Web.Mvc.Controller.EndExecuteCore (IAsyncResult asyncResult) +65
System.Web.Mvc.Async. & Lt; & gt; c_ DisplayClass4.b _3 (IAsyncResult ar) +15 System.Web.Mvc.Controller.EndExecute (IAsyncResult asyncResult) +51
System.Web.Mvc. & Lt; & gt; c_ DisplayClass8.b _3 (IAsyncResult asyncResult) +42
System.Web.Mvc.Async. & Lt; & gt; c_ DisplayClass4.b _3 (IAsyncResult ar) +15 System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) +51
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +606 System.Web.HttpApplication.ExecuteStep (IExecutionStep Schritt, Boolean & amp; abgeschlossenSynchron) +288
Eine Problemumgehung könnte darin bestehen, einen SQL-Befehl zum Erstellen der Datenbank auszuführen, anstatt _dbContext.Database.CreateIfNotExists ();
zu verwenden_dbContext.Database.ExecuteSqlCommand ("
CREATE DATABASE [Datenbankname] ON PRIMARY (NAME = N'Datenbankname ', DATEINAME = N'c: \ PathToData \ datenbankname.mdf ', GRÖSSE = 2048KB, FILEGROWTH = 1024 KB) LOG ON (NAME = N'Datenbankname_log ', FILENAME = N'c: \ PathToLog \ Datenbankname_log.ldf ', SIZE = 1024KB, FILEGROWTH = 10%) COLLATE Französisch_CI_AI
");
Ich habe einen kleinen Abstand eingefügt, um das Lesen zu vereinfachen, offensichtlich den Datenbanknamen in den gewünschten Namen zu ändern und auch PathToData und PathToLog.
Wenn Sie die Sortierung des Servers in French_CI_AI ändern, werden alle neuen Datenbanken mit dieser Sortierung erstellt, es ist jedoch nicht immer die beste Wahl und verursacht Kopfschmerzen, wenn Sie die Entwicklungsphase hinter sich haben (temporäre Tabellen und andere temporäre Objekte).
Für c # SqlConnection.ClearAllPools (); bevor die nächste Verbindung initiiert wird, funktioniert auch.
Wenn Sie die Sortierung der aktuellen Datenbank ändern möchten, können Sie dieses Snippet verwenden
%Vor%oder
%Vor%Tags und Links entity-framework-4.1 sql-server-2008 ef-code-first