gpt4 book ai didi

entity-framework - Entity Framework : Code First - Column Mapping

转载 作者:行者123 更新时间:2023-12-02 22:29:52 25 4
gpt4 key购买 nike

我有这样一个模型:

public class Entity
{
[Key, Required]
public virtual long EntityId { get; set; }
[Required]
public virtual string Name { get; set; }
public virtual long? ParentEntityId { get; set; }
}

这是我的 table :

create table Entities(
EntityId bigint not null identity(1, 1),
Name nvarchar(64) not null,
ParentEntityId bigint null
)

ParentEntityId 是 EntityId 的外键。

当我尝试创建 Entity 实体时,这是我得到的异常:列名称“ParentEntity_EntityId”无效。

我不知道为什么 EF 为那个特定的专栏选择那个约定,但如果我这样做:

[Column("TryPickThisName")]
public virtual int? ParentEntityId { get; set; }

“TryPickThisName”列名称出现相同的错误。最后,如果我正确写入列名称删除属性,它将显示原始错误消息。

最佳答案

您是否遗漏了模型的一部分?

我认为正在发生的事情是您想要创建一个自引用表,如果 Entity 有一个 ParentEntity,则可以选择引用它自己。

发生的事情是 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; }
}

创建这个数据库: enter image description here

关于entity-framework - Entity Framework : Code First - Column Mapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12463593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com