【发布时间】:2012-11-17 18:04:30
【问题描述】:
我想先更改由ef代码创建的整个数据库的排序规则,我尝试通过在创建后运行脚本来做到这一点,但它不起作用,
_dbContext.Database.Delete();
_dbContext.Database.CreateIfNotExists();
_dbContext.Database.ExecuteSqlCommand("ALTER DATABASE afi COLLATE French_CI_AI");
是否可以在创建数据库之前设置排序规则?
这是我得到的例外:
重置连接会导致与初始状态不同的状态 登录。登录失败。用户“afi”登录失败。一个严重的错误 发生在当前命令上。结果,如果有的话,应该是 丢弃。
[SqlException (0x80131904): 重置连接会导致 与初始登录不同的状态。登录失败。
用户“afi”登录失败。当前出现严重错误 命令。结果(如果有)应丢弃。]
System.Data.SqlClient.SqlConnection.OnError(SqlException 异常, 布尔型 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 数据流、 BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean & dataReady) +4403
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler、SqlDataReader 数据流、 BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +84
System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(字节 [] 缓冲区,TransactionManagerRequestType 请求,字符串 transactionName, TransactionManagerIsolationLevel isoLevel,Int32 超时, SqlInternalTransaction 事务,TdsParserStateObject stateObj, 布尔 isDelegateControlRequest) +1370
System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon(TransactionRequest transactionRequest,字符串 transactionName,IsolationLevel iso, SqlInternalTransaction 内部事务,布尔值 isDelegateControlRequest) +674
System.Data.SqlClient.SqlInternalConnection.BeginSqlTransaction(隔离级别 iso,字符串事务名称)+547
System.Data.SqlClient.SqlInternalConnection.BeginTransaction(隔离级别 异)+18
System.Data.SqlClient.SqlConnection.BeginDbTransaction(隔离级别 隔离级别)+211
System.Data.EntityClient.EntityConnection.BeginDbTransaction(隔离级别 隔离级别)+155[EntityException: 启动事务时发生错误 提供者连接。有关详细信息,请参阅内部异常。]
System.Data.EntityClient.EntityConnection.BeginDbTransaction(隔离级别 隔离级别)+4298876
System.Data.EntityClient.EntityConnection.BeginTransaction() +10
System.Data.Objects.ObjectContext.SaveChanges(SaveOptions 选项) +538 System.Data.Entity.Internal.InternalContext.SaveChanges() +218 Afi.Domain.Storage.AfiDbContext.SaveChanges() 在 c:\inetpub\wwwroot\afi\src\Domain\Storage\AfiDbContext.cs:190
Afi.Domain.Storage.EntitySession.Commit() 在 c:\inetpub\wwwroot\afi\src\Domain\Storage\EntitySession.cs:54
Afi.Web.Controllers.CIController.Seed(Boolean excludeSomeData) 在 c:\inetpub\wwwroot\afi\src\Web\Controllers\CIController.cs:263
Afi.Web.Controllers.CIController.Index() 在 c:\inetpub\wwwroot\afi\src\Web\Controllers\CIController.cs:89
lambda_method(闭包, ControllerBase, Object[]) +81
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext 控制器上下文,IDictionary2 parameters) +2612 参数)+39
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
System.Web.Mvc.Async.c_DisplayClass42.b_41() +34 System.Web.Mvc.Async.c_DisplayClass39.b_33() +124 System.Web.Mvc.Async.c_DisplayClass4f.b_49() +837307 System.Web.Mvc.Async.c_DisplayClass4f.b_49() +837307 System.Web.Mvc.Async.c_DisplayClass37.b_36(IAsyncResult asyncResult) +15
System.Web.Mvc.Async.c_DisplayClass2a.b_20() +33 System.Web.Mvc.Async.c_DisplayClass25.b_22(IAsyncResult asyncResult) +837892
System.Web.Mvc.c_DisplayClass1d.b_18(IAsyncResult asyncResult) +28
System.Web.Mvc.Async.c_DisplayClass4.b_3(IAsyncResult ar) +15 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +65
System.Web.Mvc.Async.c_DisplayClass4.b_3(IAsyncResult ar) +15 System.Web.Mvc.Controller.EndExecute(IAsyncResult 异步结果)+51
System.Web.Mvc.c_DisplayClass8.b_3(IAsyncResult asyncResult) +42
System.Web.Mvc.Async.c_DisplayClass4.b_3(IAsyncResult ar) +15 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult 异步结果)+51
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288
【问题讨论】:
-
您是否知道,即使您更改了数据库的排序规则,在更改之前创建的任何对象都会保留该排序规则?如果您有一个包含 100 行的表。他们将保留旧的排序规则,而新条目将具有新的排序规则。
-
另外,当你创建一个数据库并且你没有指定排序规则时,它会采用服务器的排序规则。服务器是否设置为 French_CI_AI?
-
我们想更改创建数据库的时间和 EF Code First 创建表的时间之间的排序规则,但我们不知道如何使表应该为空
-
服务器的排序规则是什么?在 SSMS 中,右键单击服务器并选择属性。在 General 下,您将看到条目“Server Collation”...
-
服务器排序规则是 French_CI_AS 但我无法更改
标签: sql-server-2008 entity-framework-4.1 ef-code-first