C# 为什么';t DropCreateDatabase是否总是在模型更改时删除数据库?
我有一个带有一个实体的模型:C# 为什么';t DropCreateDatabase是否总是在模型更改时删除数据库?,c#,entity-framework,ef-code-first,entity-framework-6,C#,Entity Framework,Ef Code First,Entity Framework 6,我有一个带有一个实体的模型: namespace TestMigration { public class BlogContext : DbContext { public DbSet<Blog> Blogs { get; set; } } public class Blog { public int BlogId { get; set; } public string Name { ge
namespace TestMigration
{
public class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
}
public class Blog
{
public int BlogId { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public int FollowersCount { get; set; }
//public int BloggerAge { get; set; }
}
}
为了理解DropCreateDatabaseAlways
的角色,我从这个实体(Blog
)中删除了一个属性,当我运行应用程序时,它抛出以下错误:
数据库中已存在名为“Blogs”的对象
它是否应该在任何情况下删除数据库,然后从所提供的模型中重新创建它?您是否也可以显示其他配置?这是
EF 6
还是?我更新了代码。我使用的是最新版本6.1.3,您从未实际设置dbContext的初始值设定项。公平地说,您甚至没有指定连接字符串,也没有定义构造函数(至少应该设置初始值设定项)。我没有显式设置连接字符串,因为它会自动设置。您能在回答中进一步解释吗?您能同时显示其他配置吗?这是EF 6
还是?我更新了代码。我使用的是最新版本6.1.3,您从未实际设置dbContext的初始值设定项。公平地说,您甚至没有指定连接字符串,也没有定义构造函数(至少应该设置初始值设定项)。我没有显式设置连接字符串,因为它会自动设置。请你在答复中作进一步解释好吗?
public class DataInitializer : DropCreateDatabaseAlways<BlogContext>
{
protected override void Seed(BlogContext context)
{
var blogs = new List<Blog>
{
new Blog {FollowersCount=456, Name="ABC", Url="abc.com" },
new Blog {FollowersCount=789, Name="DEF", Url="def.com" },
new Blog {FollowersCount=246, Name="GHI", Url="ghi.com" },
new Blog {FollowersCount=135, Name="JKL", Url="jkl.com" },
new Blog {FollowersCount=258, Name="MNO", Url="mno.com" }
};
blogs.ForEach(b => context.Blogs.Add(b));
context.SaveChanges();
}
}
static void Main(string[] args)
{
Database.SetInitializer(new DataInitializer());
using (var db = new BlogContext())
{
//db.Blogs.Add(new Blog { Name = "KOLP" });
//db.SaveChanges();
foreach (var blog in db.Blogs)
{
Console.WriteLine($"\n*****({blog.BlogId})*****");
Console.WriteLine("blog.Name: " + blog.Name);
}
}
Console.ReadLine();
}