2014-11-06 47 views
5

我試圖定義一些模型,我在Entity Framework 6中使用。我想使用F#記錄。如果我將[<CLIMutable>]置於記錄定義之上,那麼使用ICollection<'a>就是收集。 EF工作正常。如何爲實體框架創建虛擬記錄字段延遲加載

我可以存儲和檢索記錄。然而,對於EF做惰性加載,我需要使包含集合虛擬的記錄字段。我可以通過將其設爲抽象並提供默認值來使屬性成員變爲虛擬。記錄不是類。是否有可能創造一個記錄領域虛擬?

如果我嘗試用一​​種抽象的成員,我得到這個錯誤,以增加記錄this declaration element is not permitted in an augmentation

回答

5

據我所知,你不能定義一個創紀錄的虛擬成員 - 這是有道理的,因爲你也不能繼承一個記錄,所以你爲什麼需要虛擬成員。

但我明白爲什麼這將是實體框架所必需的。也許這是有道理的,有像CliVirtual屬性,類似於CliMutable(特別是如果這經常發生)。請隨時在F# uservoice page上提出建議!

所以,我想你最好的選擇是使用虛擬自動實現屬性的普通類(看起來顯著醜陋):

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

或許看一些其他的SQL類型提供商F#放過你更好地做同樣的事情!

+1

謝謝。已經提出了它。 http://fslang.uservoice.com/forums/245727-f-language/suggestions/6672675-an-clivirtual-attribute – Remko 2014-11-06 12:55:36

+0

我投了贊成票。 – 2016-06-04 21:34:05