相关疑难解决方法(0)

"无法删除数据库,因为它当前正在使用中".怎么修?

有这个简单的代码,我得到"不能删除数据库"test_db"因为它当前正在使用"(CleanUp方法),因为我运行它.

[TestFixture]
public class ClientRepositoryTest
{
    private const string CONNECTION_STRING = "Data Source=.;Initial Catalog=test_db;Trusted_Connection=True";
    private DataContext _dataCntx;

    [SetUp]
    public void Init()
    {
        Database.SetInitializer(new DropCreateDatabaseAlways<DataContext>());
        _dataCntx = new DataContext(CONNECTION_STRING);
        _dataCntx.Database.Initialize(true);
    }

    [TearDown]
    public void CleanUp()
    {
        _dataCntx.Dispose();
        Database.Delete(CONNECTION_STRING);
    }
}
Run Code Online (Sandbox Code Playgroud)

DataContext有一个这样的属性

 public DbSet<Client> Clients { get; set; }
Run Code Online (Sandbox Code Playgroud)

如何强制我的代码删除数据库?谢谢

database unit-testing entity-framework database-connection entity-framework-4.1

58
推荐指数
4
解决办法
4万
查看次数

实体框架5代码优先不创建数据库

我正在尝试使用Entity Framework的代码优先概念创建一个新数据库.但是,在运行代码时,不会创建数据库(使用DropCreateDatabaseIfModelChanges设置),尽管代码运行正常.当我尝试从数据库中获取某些内容时,我看到以下异常.

在此输入图像描述

我的项目使用DataAccess具有通用服务和存储库构造的单独层进行设置.因此,我的所有实体,存储库和数据库上下文都在解决方案中的单独项目中.

我的global.asax文件包含以下代码.

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
Run Code Online (Sandbox Code Playgroud)

这应该初始化一个新的数据库,如果它不存在,对吧?

我的数据库上下文类看起来像这样;

namespace Website.DAL.Model
{
    public class MyContext : DbContext
    {
        public IDbSet<Project> Projects { get; set; }
        public IDbSet<Portfolio> Portfolios { get; set; }

        /// <summary>
        /// The constructor, we provide the connectionstring to be used to it's base class.
        /// </summary>
        public MyContext()
            : base("MyConnectionString")
        {
        }

        static MyContext()
        {
            try
            {
                Database.SetInitializer<MyContext>(new DropCreateDatabaseIfModelChanges<MyContext>());
            }
            catch (Exception)
            {
                throw;
            }
        }

        /// <summary>
        /// This method …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first asp.net-mvc-4 entity-framework-5

21
推荐指数
1
解决办法
4万
查看次数

改变实体框架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
查看次数

无法删除数据库,因为它正在使用+ EF代码优先

我是asp .net mvc3的新手

我试图通过标准的asp .net成员资格提供程序存储其他用户信息.我创建了一个新的实体UserAddress,并使用成员API将其与aspnet_tables同步.

但是,现在如果我对UserAddress类进行任何更改 - asp.net不会删除并重新创建模型.我收到了错误

无法删除数据库,因为它正在使用中.

我搜索了stackoverflow和谷歌.基本上,我的问题与此类似

正在使用的数据库错误与实体框架4代码优先

但是,我不确定如何实现chris建议的解决方案:

"这发生在我身上,因为我正在调用针对数据库的成员资格方法,而这正在产生冲突.我通过强制初始化程序在使用成员资格系统之前运行和播种来解决这个问题"

我很确定这就是数据库正在使用的原因,因为我的代码在数据存储库中的这一点落空了:

var userid = Membership.GetUser.ProviderUserKey.ToString();
return db.UserAddress.SingleOrDefault(a => a.UserId == userid);
Run Code Online (Sandbox Code Playgroud)

如何在成员资格系统之前强制初始化程序运行?

我的代码片段如下:

public class UserAddress
{
    public int UserAddressId { get; set; }
    public string UserId { get; set; }
    public string FlatNo { get; set; }
    public string BuildingName { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string PostCode { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

sql entity-framework-4.1 asp.net-mvc-3

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