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



我正在尝试定义实体框架6中使用的一些模型。我想用F#唱片。如果我将[<CLIMutable>]放在记录定义之上,并将ICollection<'a>用于集合。EF运行良好。

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

如果我试图用一个抽象成员来扩充记录,我会得到这个错误this declaration element is not permitted in an augmentation

据我所知,您不能在记录中定义虚拟成员-这是有道理的,因为您也不能从记录继承,那么为什么需要虚拟成员呢。

但我明白为什么实体框架需要这样做。也许拥有类似于CliMutableCliVirtual属性是有意义的(尤其是在这种情况经常发生的情况下)。欢迎在F#用户语音页面上提出建议!

所以,我想你最好的选择是使用具有虚拟自动实现属性的普通类(看起来更丑陋):

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

或者看看F#的其他一些SQL类型提供程序是否能让您更好地完成同样的事情!

最新更新