如何在代码优先 Entity Framework 中提供数据库配置设置?
How to provide database configuration settings in code-first Entity Framework?
我没有使用 localdb
或 ./sqlexpress
我必须使用服务器名称
MSOLDEV03\SQL2012
这是我生成数据库的代码;当我 运行 我得到一个 SqlConnection
错误 "server not found":
public class Blog
{
public int BlogId { get; set; }
public string Name { get; set; }
public virtual List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public int BlogId { get; set; }
public virtual Blog Blog { get; set; }
}
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
我使用了命令
Enable-Migrations
此命令创建迁移文件夹但不在我的 SQL 服务器实例上生成数据库 MSOLDEV03\SQL2012
然后我尝试运行这段代码
using (var db = new BloggingContext())
{
db.Blogs.Add(new Blog { Name = "Another Blog " });
db.SaveChanges();
foreach (var blog in db.Blogs)
{
Console.WriteLine(blog.Name);
}
}
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
仍未生成数据库,但错误连接到 SQL 未找到服务器。
这是我的 app.config
文件不包含 sql 连接
<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>
在您的上下文 class 构造函数中,您可以提供如下密钥:
public BloggingContext() : base("name=BloggingContextKey")
{
}
然后在您的配置文件中为该键赋值:
<connectionStrings>
<add name="BloggingContextKey" connectionString="Data Source=<Your server>; Initial Catalog=<Database>;user=<user>;pwd=<password>;" providerName="System.Data.SqlClient" />
</connectionStrings>
我没有使用 localdb
或 ./sqlexpress
我必须使用服务器名称
MSOLDEV03\SQL2012
这是我生成数据库的代码;当我 运行 我得到一个 SqlConnection
错误 "server not found":
public class Blog
{
public int BlogId { get; set; }
public string Name { get; set; }
public virtual List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public int BlogId { get; set; }
public virtual Blog Blog { get; set; }
}
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
我使用了命令
Enable-Migrations
此命令创建迁移文件夹但不在我的 SQL 服务器实例上生成数据库 MSOLDEV03\SQL2012
然后我尝试运行这段代码
using (var db = new BloggingContext())
{
db.Blogs.Add(new Blog { Name = "Another Blog " });
db.SaveChanges();
foreach (var blog in db.Blogs)
{
Console.WriteLine(blog.Name);
}
}
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
仍未生成数据库,但错误连接到 SQL 未找到服务器。
这是我的 app.config
文件不包含 sql 连接
<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>
在您的上下文 class 构造函数中,您可以提供如下密钥:
public BloggingContext() : base("name=BloggingContextKey")
{
}
然后在您的配置文件中为该键赋值:
<connectionStrings>
<add name="BloggingContextKey" connectionString="Data Source=<Your server>; Initial Catalog=<Database>;user=<user>;pwd=<password>;" providerName="System.Data.SqlClient" />
</connectionStrings>