【问题标题】:Update entities in Entity Framework automatically自动更新实体框架中的实体
【发布时间】:2017-02-12 15:15:01
【问题描述】:

我有一个简单的数据库,我使用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 方法?如果不手动执行此操作?

谢谢

【问题讨论】:

  • “我的数据库更改”是什么意思?其中的数据还是架构(列、约束等)?
  • 你好,架构
  • 改变数据库架构的触发器不就是模型吗?我的意思是,要改变架构,你需要改变你的模型,你不应该从数据库本身来做
  • 您是使用代码优先方法还是数据库优先方法?从发布的代码看起来像代码优先的方法?
  • 好的,所以我必须使用迁移来推送我的更改?

标签: c# entity-framework entity


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    1. 启用迁移
    2. 添加迁移 InitialModel
    3. 更新数据库

    对于默认数据/枚举,您应该使用播种。用于在包管理器控制台中播种

    1. 添加迁移填充状态

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

    1. 更新数据库

    为了更好地理解你可以查看here

    【讨论】:

    • 不,这是一个 WCF 项目。但我有一个 sql server 项目。我部署 Dacpac 来更新我的数据库架构
    • 嗨 Azerty123,如果安装了实体框架/引用了项目,您也可以在 WCF 项目中执行相同的操作。
    • 但我想保留我的其他项目并使用 dacpac 管理数据库。我不想在我的 WCF 项目中使用迁移,也不想使用 edmx 来更新我的实体
    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多