Est*_*ban 2 entity-framework ef-code-first
我有这样的模型:
public class Entity
{
[Key, Required]
public virtual long EntityId { get; set; }
[Required]
public virtual string Name { get; set; }
public virtual long? ParentEntityId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的表:
create table Entities(
EntityId bigint not null identity(1, 1),
Name nvarchar(64) not null,
ParentEntityId bigint null
)
Run Code Online (Sandbox Code Playgroud)
ParentEntityId是EntityId的外键.
当我尝试创建一个Entity实体时,这是我得到的异常:
Invalid column name 'ParentEntity_EntityId'.
我不知道为什么EF会选择该特定列的约定,但如果我这样做:
[Column("TryPickThisName")]
public virtual int? ParentEntityId { get; set; }
Run Code Online (Sandbox Code Playgroud)
使用"TryPickThisName"列名称显示相同的错误.最后,如果我正确地写了列名或删除属性,它将显示原始错误消息.
你把部分模型留下了吗?
我认为正在发生的事情是你想要创建一个自引用表,如果它有ParentEntity,Entity可以选择引用它自己.
发生了什么是EF正在创建ParentEntity_EntityId,因为您没有将FK属性显式映射到导航属性.添加ForeignKey数据注释将更正此问题.
public class Entity
{
[Key, Required]
public virtual long EntityId { get; set; }
[Required]
public virtual string Name { get; set; }
[ForeignKey("ParentEntity")]
public virtual long? ParentEntityId { get; set; }
public virtual Entity ParentEntity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
创建此数据库:

| 归档时间: |
|
| 查看次数: |
1969 次 |
| 最近记录: |