繁体   English   中英

在实体框架代码优先迁移中选择列名

[英]Choosing name of column in entity framework code-first migrations

我已经看到类似的问题; 但没有一个完全一样; 没有人帮助我。 我希望迁移对列使用的名称与对类中的属性使用的名称不同。 在内置类型上,我可以使用[Column("newName")] 但是,当我想要另一个类的外键时,这不起作用。

换句话说,这很好用:

[Column("NameInDB")]
public string NameInCode { get; set; }

但这根本不起作用:

[Column("Employee_Id")]
public virtual Employee Owner { get; set; }

在第二种情况下,迁移仍将列创建为Owner_Id; 它完全忽略Column批注。 是否有地方说Column注释仅适用于内置类型? 我什么都找不到。

我知道可以使用[ForeignKey]注释来执行此操作,但是如果这样做,我必须在代码中添加一个我不想要的额外属性:

[ForeignKey("Employee_Id")]
public virtual Employee Owner { get; set; }

public int Employee_Id { get; set; }

我不想这样做,因为在这种情况下,Employee_Id属性是多余的; 我宁愿只使用Owner属性。 有没有解决的办法,或者是[Column]似乎被忽略的充分原因?

public virtual Employee Owner { get; set; } public virtual Employee Owner { get; set; }未映射到DB,也未在数据库中表示。 为方便起见,它由Entity Framework自动填充。 Employee_Id-这是存储在数据库中的内容。 实体框架使用Employee_Id字段创建所有者对象。 因此,在这种情况下,Emplyee_Id不是多余的,它是必需的,并且在DB中具有物理表示形式,但是Owner字段是类的逻辑部分,由Entity Framework管理,而在DB中没有此列。 说得通?

暂无
暂无

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

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