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"/>