繁体   English   中英

Entity Framework 6.44 的这段代码在哪里执行?

[英]Where is this code with Entity Framework 6.44 executed?

如果我创建A ICollection<A> ,例如 (T is A)

public virtual T Children
{ 
    get 
    {
        return ICollection<T>;
    }
    set
    {
         ICollection<T> = value;
    }
}

实体查找在哪里执行? 在代码中还是在 SQL 服务器中? EF 喜欢这个解决方案吗?

补充:问题...我有一个 10 年前的旧系统,带有 nHibernate(版本 1.X)和 c#。 它以链形式继承,使写入数据库的类具有一定的标记。 每个人都继承了一组groundproperties,有些人有子/父关系(来自遗留代码)

public abstract class GroundpropertiesTreeBaseEntity<T> : GroundpropertiesEntity
{
    [JsonIgnore]
    public virtual T Parent { get; set; }

    public virtual IList<T> Children { get; set; }
}

如果我在数据库中查看生成的内容,每个人都有自己实体的 parentID。

但是如果我在 EF 中尝试这个,问题将是如何命名 T Parent 外键。 它期望它是类型 T 然后是 _Id 而不是其他任何东西。 您可以为此编写别名,但它不会解决 Id 问题,因为您无法编写 [Foreignkey(GetType(T)+"_Id"]。如果我无法找到解决方案来完成这项工作,那么我宁愿使用非常疯狂的解决方案不这样做,因为我会重写整个系统,因为有很多方法使用这种语法来处理它的类。

我希望这可以解决这个问题。

我通过在每个类中编写 [Foreignkey("ThegenericKeyName")] 解决了这个问题。 处理通用基类不是一个好的或漂亮的解决方案,但它解决了问题。

继承属性外键class,然后将_Id添加到放置它的属性的名称中,然后将其发送到外键属性基类名称属性。 但是我没时间了,所以我选择了第一个解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM