Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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# 为什么';t DropCreateDatabase是否总是在模型更改时删除数据库?_C#_Entity Framework_Ef Code First_Entity Framework 6 - Fatal编程技术网

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();
        }