我正在尝试在Entity Framework中使用代码优先生成数据库,但它无法正常工作。这是我在控制台应用程序的app.config
中的连接字符串:
<add name="BlogDbContext"
connectionString="data source=myserver; initial catalog=CodeFirstDemo; integrated security=SSPI"
providerName="System.Data.SqlClient" />
这是我的program.cs
文件代码:
using System.Data.Entity;
namespace CodeFirstDemo
{
public class Post
{
public int PostId { get; set; }
public System.DateTime DatePublished { get; set; }
public string Title { get; set; }
public string Body { get; set; }
}
public class BlogDbContext : DbContext
{
public DbSet<Post> Posts { get; set; }
}
class Program
{
static void Main(string[] args)
{
}
}
}
在包管理器控制台中,我尝试了:enable-migration
,然后是add-migration
,然后是update-database
..但没有发生任何事情。
我按照其他问题的建议尝试了连接字符串:
<add name="CodeFirstDemo.BlogDbContext"
connectionString="data source=myserver; initial catalog=CodeFirstDemo; integrated security=SSPI"
providerName="System.Data.SqlClient" />
有什么想法吗?
答案 0 :(得分:0)
添加一个带有以下签名的空构造函数,以引用已添加到app.config的连接字符串:
public BlogDbContext()
: base("Name=BlogDbContext")
{
}
您无需使用迁移来创建数据库。您可以执行我在Main
方法中显示的内容:
using (var context = new BlogDbContext())
{
context.Database.CreateIfNotExists();
}
答案 1 :(得分:-1)
由于您使用的是代码优先,因此您应该使用与以下示例相似的代码:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Post>().ToTable("Post");
base.OnModelCreating(modelBuilder);
}
这些将创建实体的数据库表。