简体   繁体   English

自动更新实体框架中的实体

[英]Update entities in Entity Framework automatically

I have a simple database and I use Entity Framework to perfom queries. 我有一个简单的数据库,并且使用Entity Framework执行查询。

Customer.cs 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 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);
    }
}

But if my database change, how to update my entities and the OnModelCreating method ? 但是,如果我的数据库发生更改,如何更新我的实体和OnModelCreating方法? Without do this manually ? 没有手动操作吗?

Thank's 谢谢

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

If you are using Asp.Net MVC, you can use Migrations in Package Manager Console as shown below. 如果您使用的是Asp.Net MVC,则可以在软件包管理器控制台中使用“迁移”,如下所示。

  1. enable-migrations 启用的迁移
  2. add-migration InitialModel add-migration InitialModel
  3. Update-database 更新数据库

For default data/enums you should use seeding. 对于默认数据/枚举,应使用种子设置。 For seeding in Package Manager Console 用于在Package Manager控制台中播种

  1. add-migration PopulateStatus 添加迁移PopulateStatus

a partial class with the name PopulateStatus will open, in up() method, you should write the SQl commands to insert default data. 将打开名为PopulateStatus的局部类,在up()方法中,应编写SQl命令以插入默认数据。 In your case its Status table. 在您的情况下,其状态表。 Then update database command in package manager 然后在程序包管理器中更新数据库命令

  1. Update-database 更新数据库

For better understanding you can look here 为了更好的理解,你可以看这里

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM