我有一个简单的数据库,我使用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
方法?没有手动执行此操作?
感谢的
答案 0 :(得分:0)
只要您使用“代码优先”方法,每次对DB的更改都应该通过模型完成,因此您不应该处理您所说的问题,并且您可以假设数据库结构与模型匹配
答案 1 :(得分:0)
如果您使用的是Asp.Net MVC,则可以在Package Manager Console中使用迁移,如下所示。
对于默认数据/枚举,您应该使用种子。用于在程序包管理器控制台中进行种子设定
将打开名为 PopulateStatus 的部分类,在up()方法中,您应该编写SQl命令以插入默认数据。在你的情况下它的状态表。然后在包管理器中更新数据库命令
为了更好地理解,您可以查看here