Asp.net mvc 如何在代码优先实体框架项目中插入新的实体类而不影响数据库中的数据

Asp.net mvc 如何在代码优先实体框架项目中插入新的实体类而不影响数据库中的数据,asp.net-mvc,entity-framework,ef-code-first,Asp.net Mvc,Entity Framework,Ef Code First,我正在学习asp.NETMVC和entityframework。我从一个虚拟项目开始。我正在开发一个练习博客。我有一个关于代码优先实体框架的问题。在开始时,我为表中的enter user info创建了一个实体类 这是我创建的类 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MVCDairy.Models { public class User

我正在学习asp.NETMVC和entityframework。我从一个虚拟项目开始。我正在开发一个练习博客。我有一个关于代码优先实体框架的问题。在开始时,我为表中的enter user info创建了一个实体类

这是我创建的类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MVCDairy.Models
{
    public class UserDetails
    {
        public int id { get; set; }
        public string Name { get; set; }
        public string Place { get; set; }
    }
}
我在表中插入了几个值。在下一步中,我为blog post添加了一个实体类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace MVCDairy.Models
{
    public class BlogPost
    {
        [Key]
        public int BlogId { get; set; }
        public int PostedBy { get; set; }
        public string BlogTitle { get; set; }
        public string BlogDescription { get; set; }
        public DateTime PostDate { get; set; }
    }
}
我正在上下文类中使用DropCreateDatabaseIfModelChanges

public class Context:DbContext
{
   public Context()
   {
     Database.SetInitializer<Context>(new DropCreateDatabaseIfModelChanges<Context>());
   }

   public DbSet<UserDetails> Users {get;set; }
   public DbSet<BlogPost> Blogs { get; set; }
}
公共类上下文:DbContext
{
公共上下文()
{
SetInitializer(新的DropCreateDatabaseIfModelChanges());
}
公共数据库集用户{get;set;}
公共数据库集博客{get;set;}
}

但是这个初始值设定项删除了所有表中的所有记录,我必须为每个表重新输入值。有没有什么好方法可以插入不影响我的表条目的新实体类。

您可以使用另一个初始值设定项,如
MigrateDatabaseToLatestVersion
,也可以使用
CreateDatabaseIfNotExists
(但这不会反映最新的更改)

除了上下文之外,还需要传入迁移配置


有关
MigrateDatabaseToLatestVersion
启用
Migrations
的详细信息,请参见。对于您的型号,您可以通过以下命令在
电源管理器控制台中执行此操作:

PM>Enable-Migrations
注意,您应该选择包含
DbContext
的项目

每次更改模型时(添加、更新或删除实体或更改关系或…) 您可以使用以下命令在不丢失数据的情况下更新数据库:

PM>Add-Migration  [a name for your migration]
PM>Update-Database
如果要为现有数据库添加迁移,请将其与
Ignorechanges
开关一起使用:

PM>Add-Migration [a name for your migration] -IgnoreChanges
有关EF Migrations命令的更多信息,请访问

启用迁移后,EF在您的项目中创建一个
配置
类,然后您可以设置
DbContext
初始值设定项,如下所示: 您可以将
DbContext
初始值设定项设置为:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<BlogContext, 
                                                   Configuration>()); 
Database.SetInitializer(新的MigrateDatabaseToLatestVersion());