相关疑难解决方法(0)

改变实体框架6中的数据库

我在我的代码中将EF更新为EF 6.0.2我有以下代码行:

 applicationDbContext.Database .ExecuteSqlCommand(@"ALTER DATABASE
 CURRENT SET RECOVERY FULL;");
Run Code Online (Sandbox Code Playgroud)

更新后,我收到以下错误消息:

多语句事务中不允许使用ALTER DATABASE语句.

我修复了TransctionalBehavior的问题,如下面的代码:

applicationDbContext.Database.ExecuteSqlCommand(
TransactionalBehavior.DoNotEnsureTransaction, @"ALTER DATABASE CURRENT SET RECOVERY FULL;");
Run Code Online (Sandbox Code Playgroud)

我的问题:

  • 为什么我在使用EF 6时出现此错误?
  • 我的修复是对问题的有效修复还是隐藏在此解决方案背后的魔鬼?
  • 有没有其他方法可以解决这个问题?

任何帮助将不胜感激!?

entity-framework

21
推荐指数
2
解决办法
5887
查看次数

在Entity Framework Code-First Initializer中设置数据库排序规则

我想在Entity Framework Code First创建数据库时设置数据库的默认排序规则.

我尝试过以下方法:

public class TestInitializer<T> : DropCreateDatabaseAlways<T> where T: DbContext
{
    protected override void Seed(T context)
    {
        context.Database.ExecuteSqlCommand("ALTER DATABASE [Test] SET SINGLE_USER WITH ROLLBACK IMMEDIATE");
        context.Database.ExecuteSqlCommand("ALTER DATABASE [Test] COLLATE Latin1_General_CI_AS");
        context.Database.ExecuteSqlCommand("ALTER DATABASE [Test] SET MULTI_USER");
    }
}
Run Code Online (Sandbox Code Playgroud)

当SQL Server 设置为相同的默认排序规则Latin1_General_CI_AS 时,这似乎运行正常.

但是如果我指定了不同的排序规则,比如说SQL_Latin1_General_CP1_CI_AS 则会因错误而失败,

System.Data.SqlClient.SqlException: Resetting the connection results in a different 
state than the initial login. The login fails.
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议我如何设置校对吗?

sql-server ef-code-first entity-framework-4.1

18
推荐指数
5
解决办法
2万
查看次数