嵌套实体集合



我有一个场景,我试图为特定目的具有相同型嵌套集合的可生长层次结构,并且我正在使用 ef core 2.2

public class Group:Entity
{
    public Group(Guid id):base(id)
    {
    }
   ...
   public List<Group> SubGroups { get; set; }
}
public abstract class Entity
{
   protected Entity(Guid id)
    {
        Id = id;
    }
    public Guid Id { get; private set; }
}

目标是保存数据:

|-GrandParent Group
   -Parent Group
   |--Child1 Group
      ---GrandChild1 Group
   |--Child2 Group
       ---GrandChild2 Group

错误

{System.InvalidOperationException: No suitable constructor found for entity type 'Group'. The following constructors had parameters that could not be bound to properties of the entity type: cannot bind 'guid' in 'Group(Guid guid)'.
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConstructorBindingConvention.Apply(InternalModelBuilder modelBuilder)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnModelBuilt(InternalModelBuilder modelBuilder)

您能否让我知道如何实现这一目标?

该问题与嵌套集合无关,而是实体构造函数,并且不是从问题中复制的样本。

但是例外消息

找不到适合实体类型"组"的合适构造函数。以下构造函数具有无法绑定到实体类型的属性的参数:不能绑定' guid 'in'组(GUID GUID )'。

指示您使用的真实代码

public Group(Guid guid):base(guid)

问题是参数guid名称(而不是id)。如用构造函数的实体类型所解释(在内部,需要注意的某些内容):

参数类型和名称必须与属性类型和名称匹配,除了属性可以在参数时进行pascal限制。

在这种情况下,该属性称为 Id,因此该参数必须称为 id

相关内容

  • 没有找到相关文章

最新更新