如何解决使用 Entity Framework 6.44 执行的这段代码在哪里?
我有一个带有 A
的属性 ICollection<A>
,如果我再创建一个像 (T is A) 这样的别名
public virtual T Children
{
get
{
return ICollection<T>;
}
set
{
ICollection<T> = value;
}
}
实体的查找在哪里执行?在代码中还是在 sql Server 中? EF 喜欢这个解决方案吗?
补充:问题...我有一个使用 nHibernate(1.X 版)和 c# 的 10 年旧遗留系统。它在链中继承以使写入数据库的类具有一定的标记。每个人都继承了一组基础属性,有些人有一个子/父关系(来自遗留代码)
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")] 解决了这个问题。处理通用基类不是一个好的或漂亮的解决方案,但它解决了问题。
继承属性外键类,然后将_Id添加到放置它的属性的名称,然后将其发送到外键属性基类名称属性。但是我没时间了,所以我选择了第一个解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。