初始化数据库时发生异常。删除后重新创建的用户登录失败

时间:2018-12-15 00:02:57

标签: entity-framework-6

在第一次运行时,我的程序在用户文件夹中正确创建了数据库和日志文件。

如果我随后删除数据库和日志文件并再次运行该程序,则会收到错误消息。

using System;
using blocks6.Module.BusinessObjects;

namespace BlocksConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                AddToTable();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
        private static void AddToTable()
        {
            using (var db = new blocks6DbContext())
            {
                var inf = new ModuleInfo();
                db.ModulesInfo.Add(inf);
                db.SaveChanges();
            }
            Console.WriteLine("Fin");
        }
    }
}

using System.Data.Entity;
namespace blocks6.Module.BusinessObjects
{
    public class blocks6DbContext : DbContext
    {
        public blocks6DbContext()
            : base("name=ConnectionString")
        {
          //  Database.SetInitializer(new DbInitializer());  uncommenting makes no difference
        }
        public DbSet<ModuleInfo> ModulesInfo { get; set; }
    }

    public class DbInitializer : CreateDatabaseIfNotExists<blocks6DbContext>
    {
    }

    public class ModuleInfo
    {
        public int Id { get; set; }
    }
}

app.config是

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
<connectionStrings>
  <add name="ConnectionString" connectionString="Integrated Security=SSPI;MultipleActiveResultSets=True;Data Source=(localdb)\mssqllocaldb;Initial Catalog=blocksConsole" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>

项目文件为

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{477EDA75-B7F0-4D45-866F-0AB92CE38783}</ProjectGuid>
    <OutputType>Exe</OutputType>
    <RootNamespace>BlocksConsole</RootNamespace>
    <AssemblyName>BlocksConsole</AssemblyName>
    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <Deterministic>true</Deterministic>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="BlocksDbContext.cs" />
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="App.config" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="EntityFramework">
      <Version>6.2.0</Version>
    </PackageReference>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

我的Win10操作系统是版本1809 Build 17763.194

重新启动没有帮助。

[更新]

我在运行VS 15.8.1的另一台计算机上创建了一个新的控制台程序 程序锁定在行上

db.ModulesInfo.Add(inf);

当我升级到15.9.4时,锁定停止了。但是,重新创建数据库的错误也在此计算机上重复。

第二台计算机上的Winver显示1803 17134.471

清空回收站没有帮助。

1 个答案:

答案 0 :(得分:1)

事实证明,已删除的数据库仍显示为SQL Server对象资源管理器(在Visual Studio中)的一个节点

shows in SQL Server Object Explorer

如果我删除它

delete the database

然后程序成功运行以重新创建数据库。

相关问题