【问题标题】:Entity Framework Code First column name issue实体框架代码第一列名称问题
【发布时间】:2013-08-27 11:24:50
【问题描述】:

我首先遇到了实体框架代码的问题。

我的 SQL 数据库中有一个名为“myId”的现有列。我像这样将它添加到我的班级:

public virtual int? myId { get; set; }

我运行:update-database -connectionStringName '[SiteName]' -force

所有运行都成功,但是当我查看数据库时,我看到现有列已更改为“myId1”。我不确定为什么我现有列的名称被更改而不使用?如您所见,它在名称后附加了一个“1”......?

任何想法都将不胜感激!

【问题讨论】:

  • 如果列仍然存在,为什么要更新数据库? update-database 的目标之一是更新数据库模式以使 i 符合模型。在您的情况下,模型中的新字段 => 架构中的新字段。由于名称不可用,因此创建了一个新名称。
  • 如果我不运行更新,我会得到以下信息...“支持 '[DBCContext]' 上下文的模型在创建数据库后发生了变化”
  • 最初是如何创建数据库的?也就是说,为什么你有一个 myId 列?
  • 该列是别人添加的(这里不是问),没有出现在实体中。我猜该列是手动添加到数据库中的。
  • 这就是重点,可以放弃吗?顺便说一句:int 上的 virtual 对我来说似乎没用。虚拟用于相关实体。并且您的模型应该有一个使用 myId 作为键的相关实体...

标签: c# entity-framework code-first


【解决方案1】:

我假设 myId 不是 PK!?

`public int? myId { get; set; }`

并将您的迁移添加为

`AlterColumn("tablename", "myId", c => c.Int(nullable: true));`

然后运行 ​​Update-database 命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    相关资源
    最近更新 更多