我正在尝试定义一些在Entity Framework 6中使用的模型。我想使用F#记录。如果我把[<CLIMutable>]
记录定义放在首位,然后将其ICollection<'a>
用于集合。EF工作正常。
我可以存储和检索记录。但是,对于EF进行延迟加载,我需要将包含集合的记录字段设为虚拟。我可以通过将属性成员抽象化并提供默认值来使其成为虚拟成员。记录不是类。是否可以将记录字段虚拟化?
如果我尝试用抽象成员扩充记录,则会出现此错误 this declaration element is not permitted in an augmentation
据我所知,您不能在记录中定义虚拟成员-这很有意义,因为您也不能从记录中继承,所以为什么需要虚拟成员。
但是我可以理解为什么实体框架需要这样做。拥有类似于CliVirtual
属性的东西也许是有意义的CliMutable
(特别是如果这种情况经常发生)。随时在F#uservoice页面上提出建议!
因此,我猜您最好的选择是使用带有虚拟自动实现属性的普通类(看起来丑陋得多):
type A() =
abstract member Id: int with get, set
default val Id = 123 with get, set
或者,也许看看是否有一些其他的F#SQL类型提供程序可以让您做得更好!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句