gpt4 book ai didi

c# - EF可选一对一自身

转载 作者:行者123 更新时间:2023-11-30 21:07:04 25 4
gpt4 key购买 nike

我是 Entity Framework 的新手,在尝试映射我的实体时遇到了问题。

基本上我有一个 Location 实体,它可以有一个可选的父位置。所以我想要在我的 Location 对象上有一个子位置集合以及当前位置的父位置。下面是我当前的 Location 实体:

public class Location : BaseEntity
{
private ICollection<Location> _childLocations;

public virtual ICollection<Location> ChildLocations
{
get { return _childLocations ?? (_childLocations = new List<Location>()); }
set { _childLocations = value; }
}

public virtual int Id { get; set; }

public virtual string Name { get; set; }

public virtual Location ParentLocation { get; set; }
}

但是,当涉及到映射时,我变得很迷茫。以下是我到目前为止的尝试:

public partial class LocationMap : EntityTypeConfiguration<Location>
{
public LocationMap()
{
this.ToTable("Location");
this.HasKey(l => l.Id);
this.Property(l => l.Name).HasMaxLength(100);

this.HasMany(l => l.ChildLocations)
.WithMany()
.Map(m => m.ToTable("Location"));

this.HasOptional(l => l.ParentLocation)
.WithOptionalDependent()
.Map(m => m.ToTable("Location"));
}
}

谁能指出我正确的方向?

最佳答案

你想要这样的东西:

this.HasOptional(l => l.ParentLocation)
.WithMany(l => l.ChildLocations)
.Map(m => m.ToTable("Location"));

但不是关系的两个声明,即以上内容替换了您示例中的以下内容

    this.HasMany(l => l.ChildLocations)
.WithMany()
.Map(m => m.ToTable("Location"));

this.HasOptional(l => l.ParentLocation)
.WithOptionalDependent()
.Map(m => m.ToTable("Location"));

关于c# - EF可选一对一自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10718415/

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