【问题标题】:Map model to existing database table using Entity Framework使用实体框架将模型映射到现有数据库表
【发布时间】:2016-08-31 14:51:53
【问题描述】:

尝试使用 Entity Framework 将我的类映射到现有表时,我遇到了一些困难。我目前首先使用代码,但是在没有它的情况下创建了一个表,我无法将它映射到一个创建的模型。

我的班级:

 [Table("AgentCallsByPartner")]
public class AgentCallsByPartnerModel
{
    [Key]
    public int AgentCallID { get; set; }

    [Required]
    public DateTime CallDate { get; set; }

    public string CustomerID { get; set; }

    public string AgentNo { get; set; }

    public string AccountCreated { get; set; }

    public string QuoteStarted { get; set; }

    [Required]
    public string GroupName { get; set; }

    [Required]
    public string GroupRollup { get; set; }

}

上下文

    public DbSet<AgentCallsByPartnerModel> AgentCallsByPartner { get; set; }

这是我的桌子

但是当我尝试从数据库中获取用户时,我得到了一个异常

自数据库创建以来,DbContext 发生了变化......

那么我的错误是什么?谢谢

【问题讨论】:

  • 您是否更新了迁移?如果模式改变,你应用 drop create new database 吗?
  • 我没有,因为表是直接在sql server中创建的,我需要做些什么吗?
  • 你有迁移的想法吗?
  • 请检查我的答案

标签: c# .net entity-framework entity-framework-4 entity-framework-5


【解决方案1】:

你可以通过几种方式执行我只是描述几种方式

从“工具”菜单中,单击Library Package Manager,然后单击Package Manager Console

enable-migrations 命令在您的项目中创建一个 Migrations 文件夹,并在该文件夹中放入一个 Configuration.cs 文件,您可以编辑该文件来配置 Migrations。

(如果您错过了上面指示您更改数据库名称的步骤,迁移将找到现有数据库并自动执行add-migration 命令。没关系,这只是意味着您不会运行迁移测试在部署数据库之前编写代码。稍后运行update-database 命令时不会发生任何事情,因为数据库已经存在。)

更详细的迁移http://www.codeproject.com/Articles/801545/Code-First-Migrations-With-Entity-Framework

另一种方式:

How to recreate database in EF if my model changes?

注意:如果您使用迁移,那么大部分时间都不会丢失数据价值

更新:

迁移过程中运行流动命令的问题

添加-迁移初始-IgnoreChanges

更新数据库-详细

【讨论】:

  • 我运行了 add-migration 命令,它们是 update-databse,它会抛出一条红色消息,说数据库中已经有一个名为“AgentCallsByPartner”的对象。
猜你喜欢
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 2020-06-26
  • 2011-08-28
  • 1970-01-01
相关资源
最近更新 更多