So ändern / setzen Sie die Sortierung zuerst in EF-Code

8

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, IDictionary 2 parameters) +261
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2   Parameter) +39
  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

    
VinnyG 17.11.2012, 18:04
quelle

4 Antworten

6

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).

    
twoleggedhorse 14.12.2012, 10:24
quelle
0

fügen Sie nur [] zur Namensdatenbank hinzu,

%Vor%     
Femavelsa 09.09.2013 22:08
quelle
0

Für c # SqlConnection.ClearAllPools (); bevor die nächste Verbindung initiiert wird, funktioniert auch.

    
user2916800 29.01.2015 22:59
quelle
0

Wenn Sie die Sortierung der aktuellen Datenbank ändern möchten, können Sie dieses Snippet verwenden

%Vor%

oder

%Vor%

Datenbank in Entity Framework 6 ändern

    
Dmitriy Bykov 13.10.2015 12:04
quelle