Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 使用无参数构造函数记录?_Entity Framework_Asp.net Mvc 3_F# - Fatal编程技术网

Entity framework 使用无参数构造函数记录?

Entity framework 使用无参数构造函数记录?,entity-framework,asp.net-mvc-3,f#,Entity Framework,Asp.net Mvc 3,F#,我正试图构建一个使用实体框架的web应用程序(ASP.NETMVC3),但我又一次碰壁了。尝试在视图中的集合上运行foreach循环时引发以下异常: System.InvalidOperationException:异常 类“GvG.Entities.News”没有 无参数构造函数 现在是我的问题,是否有可能在我的记录类型上定义一个无参数构造函数 目前我的记录类型如下: type News = { mutable ID:int; mutable Author:string;

我正试图构建一个使用实体框架的web应用程序(ASP.NETMVC3),但我又一次碰壁了。尝试在视图中的集合上运行foreach循环时引发以下异常:

System.InvalidOperationException:异常 类“GvG.Entities.News”没有 无参数构造函数

现在是我的问题,是否有可能在我的记录类型上定义一个无参数构造函数

目前我的记录类型如下:

type News = { 
    mutable ID:int; 
    mutable Author:string; 
    mutable Title:string; 
    mutable Content:string }
我知道我可以创建一个带有烘焙字段等的类,但这正是我试图避免的。

MSDN说“在记录类型中,不能定义构造函数。”

在我为F#团队做的某个承包项目中,我试图解决这个问题(尤其是实体框架),您可以在中找到一个实验性的解决方案。它没有经过充分测试&您必须自己构建它。实验解决方案将查询中的所有F#元组和F#记录替换为其他(可变)类型,然后将结果转换回记录/元组

EDIT在你的问题中没有提到定义类,但我将把这个例子留给其他可能有同样问题的人

没有简单的解决办法。不幸的解决方案是显式定义具有属性的类:

type News() =
  let mutable id = 0
  let mutable author = ""
  let mutable title = ""
  let mutable content = ""
  member x.ID with get() = id and set(v) = id <- v
  member x.Author with get() = author and set(v) = author <- v
  member x.Title with get() = title and set(v) = title <- v
  member x.Content with get() = content and set(v) = content <- v
type News()=
设可变id=0
让可变作者=“”
让可变标题=“”
让可变内容=“”

使用get()=ID和set(v)=ID的成员x.ID这是一个老问题,但我今天偶然发现了类似的问题,看起来在F#3.0中,您可以使用
[]
属性来克服它:


这样,当C#API需要POCO时,您可以在许多场景中使用F#不可变记录。

我可以发誓,我读了那篇文章3次,但没有注意到:(-您永远不会碰巧知道这个问题的解决方法,因为我不能使用构造函数?下一个版本带来了
[]
,所以您是对的:)@Bartosz真的很酷:-)老实说,我不知道这会在2011年4月被添加!