Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF代码首先在启动时使用sqlclient提供程序创建数据库_C#_Sql_Entity Framework - Fatal编程技术网

C# EF代码首先在启动时使用sqlclient提供程序创建数据库

C# EF代码首先在启动时使用sqlclient提供程序创建数据库,c#,sql,entity-framework,C#,Sql,Entity Framework,我正在尝试使用以下代码在启动时创建数据库: class DataContext : DbContext { public DbSet<Student> Students { get; set; } public DataContext() : base("Database") { Database.Initialize(true); } } ///////// try { var db = new DataContext();

我正在尝试使用以下代码在启动时创建数据库:

class DataContext : DbContext
{
    public DbSet<Student> Students { get; set; }

    public DataContext() : base("Database")
    {
        Database.Initialize(true);

    }

}

/////////
try
{
var db = new DataContext();

db.Students.Add(new Student());

db.SaveChanges();
}

catch (Exception ex)
{

}
//app.config

<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
    <connectionStrings>
        <add name="Database"
            connectionString="Server=(localdb)\v11.0;Integrated Security=true;
            AttachDbFileName=C:\Users\Aaron\Documents\visual studio 2015\Projects\EF Test\EF Test\bin\Debug\MyData.mdf"
            providerName="System.Data.SqlClient"/>
    </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
我想我的连接线坏了。我已经试了十几次了,但都没有成功。我在初始化调用时遇到异常。尝试为文件附加自动命名数据库失败。谢谢你的帮助

编辑 更改为:

<connectionStrings>
<add name="Database"
        connectionString="Server=(localdb)\v11.0;Integrated Security=true;
        database=C:\Users\Aaron\Documents\visual studio 2015\Projects\EF Test\EF Test\bin\Debug\MyData.mdf"
        providerName="System.Data.SqlClient"/>
</connectionStrings>\
现在我得到了其他信息:无法打开登录请求的数据库C:\Users\Aaron\Documents\visual studio 2015\Projects\EF Test\EF Test\bin\Debug\MyData.mdf。登录失败。

试试看

    <connectionStrings>
        <add name="Database"
             connectionString="Data Source=(LocalDb);Database=MyData.mdf;Trusted_Connection=True" />
    </connectionStrings>


因此,Code First将创建一个新的SchoolDB ByConnectionString数据库。

解决了这个问题。所以我在visual Studio Server Explorer->连接到数据库中创建了一个本地数据库。创建数据库后,我复制了如下所示的连接字符串:

<add name="dbtest" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Aaron\Desktop\mydb.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>

bam工作起来很有魅力。谢谢大家的帮助。

是的,连接字符串不正确。它告诉服务器附加一个现有的数据库文件,而不是指定数据库名称。因此,如果我将AttachDbFileName更改为database,则会出现一个错误,表明我无法登录。集成安全性不应该解决这个问题吗?这可能是因为您尚未设置初始化器数据库。SetInitializer new CreateDatabaseIfNotExists在连接到它之前。嗯,我尝试过,但没有成功。还有其他想法吗?我注意到输入了数据源。你把型号修好了吗?如果不再试一次,否则你能给我最内在的信息例外我已经纠正了打字错误。此外,我还必须将提供程序设置为providerName=System.Data.SqlClient。内部异常是参数不正确。没有说明是哪一个。将字符串更改为将产生与编辑中相同的登录错误。请检查您是否具有该文件夹的写入权限。并确保.mdf文件不存在且被锁定。我尝试了几种不同的路径,但运气不好。相同的登录错误。这一个给了我:无法打开登录请求的数据库SchoolDB ByConnectionString。登录失败。如何指定路径?是否使用windows身份验证?Integrated Security=SSPI应适用于windows身份验证。请放入新的连接字符串。同时请。尝试了集成安全性,但没有更改。如果我必须在另一台机器上安装应用程序,我是否也必须在那里运行该脚本?请尝试通过Sql server Management studio创建一个新的数据库,让我们知道任何问题。也许是许可问题。还要尝试查找数据库,查看数据库是否是通过上述方法创建的。
<add name="dbtest" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Aaron\Desktop\mydb.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>