【问题标题】:Entity framework does not see relationship in a Fully Defined Relationship实体框架在完全定义的关系中看不到关系
【发布时间】:2020-02-25 14:08:36
【问题描述】:

我已经定义了这个递归实体:

    public class Prefix
    {
        public int PrefixId { get; set; }

        // Many to one relation
        public Nullable<int> PlcObjectId { get; set; }
        public virtual PlcObject PlcObject { get; set; }

        // Many to one relation (! Recursion !)
        public Nullable<int> ParentPrefixId { get; set; }
        public virtual Prefix ParentPrefix { get; set; }

        public string Name { get; set; }
        public string NodeName { get; set; }
        ...

现在它确实知道PlcObjectIdPlcObject 应该映射到同一列。但它将ParentPrefixIdParentPrefix 映射到单独的列。如何使它们映射到同一列?

谢谢!

Image taken from pgAdmin (PostgreSQL)

【问题讨论】:

标签: c# .net postgresql entity-framework npgsql


【解决方案1】:

我相信您的问题来自这样一个事实:对于任何Prefix,许多Prefixs 都可以引用它。要映射这种关系,您需要 Prefix 类包含这样的无参数构造函数:

    public Prefix()
    {
        Prefixes = new HashSet<Prefix>();
    }

附:您的 PlcObject 列映射良好的原因是因为没有递归。您的 Prefix 对象需要像多对一关系的发送者和接收者一样处理

编辑:

您还需要将此字段添加到您的课程中

        public ICollection<Prefix> Prefixes { get; set; }

您可以随意命名,例如 ChildPrefixes 或 DependentPrefixes。

【讨论】:

  • 您好,蒂姆,感谢您的回答!这两样东西我都有。 [ForeignKey("ParentPrefixId")] 为我做了。
猜你喜欢
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多