自动更新Entity Framework中的实体

时间:2017-02-12 15:15:01

标签: c# entity-framework entity

我有一个简单的数据库,我使用Entity Framework来执行查询。

Customer.cs

namespace DataAccess.Entities
{
    [Table("Customer")]
    public partial class Customer
    {
        public int CustomerId { get; set; }

        [Required]
        [StringLength(50)]
        public string CustomerName { get; set; }

        public int StatusId { get; set; }

        public virtual Status Status { get; set; }
     }
}

Context.cs

public partial class Context : DbContext
{
    public Context()
        : base("name=DefaultConnection")
    {
    }

    public virtual DbSet<Customer> Customer { get; set; }
    public virtual DbSet<Status> Status { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Customer>()
            .Property(e => e.CustomerName)
            .IsUnicode(false);

        modelBuilder.Entity<Status>()
            .HasMany(e => e.Customer)
            .WithRequired(e => e.Status)
            .WillCascadeOnDelete(false);
    }
}

但是如果我的数据库发生变化,如何更新我的实体和OnModelCreating方法?没有手动执行此操作?

感谢的

2 个答案:

答案 0 :(得分:0)

只要您使用“代码优先”方法,每次对DB的更改都应该通过模型完成,因此您不应该处理您所说的问题,并且您可以假设数据库结构与模型匹配

答案 1 :(得分:0)

如果您使用的是Asp.Net MVC,则可以在Package Manager Console中使用迁移,如下所示。

  1. 启用的迁移
  2. add-migration InitialModel
  3. 更新的数据库
  4. 对于默认数据/枚举,您应该使用种子。用于在程序包管理器控制台中进行种子设定

    1. add-migration PopulateStatus
    2. 将打开名为 PopulateStatus 的部分类,在up()方法中,您应该编写SQl命令以插入默认数据。在你的情况下它的状态表。然后在包管理器中更新数据库命令

      1. 更新的数据库
      2. 为了更好地理解,您可以查看here