如何为实体框架延迟加载创建虚拟记录字段

雷姆科

我正在尝试定义一些在Entity Framework 6中使用的模型。我想使用F#记录。如果我把[<CLIMutable>]记录定义放在首位,然后将其ICollection<'a>用于集合。EF工作正常。

我可以存储和检索记录。但是,对于EF进行延迟加载,我需要将包含集合的记录字段设为虚拟。我可以通过将属性成员抽象化并提供默认值来使其成为虚拟成员。记录不是类。是否可以将记录字段虚拟化?

如果我尝试用抽象成员扩充记录,则会出现此错误 this declaration element is not permitted in an augmentation

托马斯·佩特里切克(Tomas Petricek)

据我所知,您不能在记录中定义虚拟成员-这很有意义,因为您也不能从记录中继承,所以为什么需要虚拟成员。

但是我可以理解为什么实体框架需要这样做。拥有类似于CliVirtual属性的东西也许是有意义的CliMutable(特别是如果这种情况经常发生)。随时在F#uservoice页面上提出建议

因此,我猜您最好的选择是使用带有虚拟自动实现属性的普通类(看起来丑陋得多):

type A() =
  abstract member Id: int with get, set
  default val Id = 123 with get, set

或者,也许看看是否有一些其他的F#SQL类型提供程序可以让您做得更好!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章