[英]F# code does not work after class instantiation
我正在尝试将Entity Framework Core示例转换为F#。 首先,我创建了如下类的F#版本BloggingContext
, Blog
和Post
:
namespace ConsoleApp.SQLite.FSharp
open Microsoft.EntityFrameworkCore
open System.Collections.Generic
type Post() =
member val PostId = 0 with get,set
member val Title = "" with get,set
member val Content = "" with get,set
member val BlogId = 0 with get,set
member val Blog = Blog() with get,set
and Blog() =
member val BlogId = 0 with get,set
member val Url = "" with get,set
member val Posts = [Post()] with get,set
type BloggingContext() =
inherit DbContext()
member val Blogs : DbSet<Blog> = null with get,set
member val Posts : DbSet<Post> = null with get,set
override this.OnConfiguring optionsBuilder =
optionsBuilder.UseSqlite("Data Source=blogging.db") |> ignore
然后,我尝试创建Main
类的f#版本,编写如下:
open System
open ConsoleApp.SQLite.FSharp
[<EntryPoint>]
let main argv =
let db = new BloggingContext() in
let blog = Blog() in
printfn "%s" "Stopped working before here";
blog.Url <- "http://blogs.msdn.com/adonet";
db.Blogs.Add(blog) |> ignore;
let count : int = db.SaveChanges() in
printfn "%i records saved to database" count;
printfn "All blogs in database:"
for blog in db.Blogs do
printfn "- %s" blog.Url
0
正如代码中标记的那样,在此代码行let blog = Blog() in
之后,它只是停止打印任何内容(以及停止工作let blog = Blog() in
而且我不知道我在创建Blog
实例时做错了什么。
我通过删除该行中的Post()
来解决它
member val Posts = [Post()] with get,set
在那时
member val Posts = [] with get,set
问题是类声明中的冗余,我已经创建了一个只有一个成员的列表,这不是我想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.