由于存在type providers来访问F#中的SQL数据,因此没有太多关注ORM的使用,微观或其他方面。我完全可以看到这背后的逻辑。
似乎许多使用F#来播放关系数据的例子是将它们插入到现有的大型数据库中,这些数据库似乎是在其他地方创建的。
感觉这里有一点差距:有没有一种很好的方法可以直接从F#管理模式创建和迁移?链接到上面的示例建议您将手动模式创建脚本作为第一步运行。这是唯一的选择吗?
我最近从一开始就开始了一个F#的小项目,我正在考虑将一些数据存储在关系数据库中(现在是sqlite)。我没有要探索的现有架构,我正在从头开始设计。在F#中管理我的架构(创建然后迁移)是否有更友好或更惯用的方式?
答案 0 :(得分:4)
您/可以/使用F#实现Entity Framework,因此获得它附带的Migrations API,但我发现它在实践中非常痛苦 - 您的所有实体类都需要member val get set
样式属性(我相信)和其他各种各样的点点滴滴。几个月前Jamie Dixon在这个博客文章中做了一个博文,大约在我尝试它的同时 - 我不喜欢它!
老实说,虽然这对你来说不是很好的答案,因为你要求的是F#中的数据库架构管理 - 我建议你使用类似VS数据库项目来管理你的架构您的代码,并使用(是)其中一个SQL类型提供程序来管理应用程序中的数据。
如果你已经开始在代码中使用"模式迁移"系统,根据我的经验,EF在C#中表现得更好,所以你可以用理论上的实验进行实验。您的F#应用程序代码引用的C#/ EF数据访问项目。
对不起。
答案 1 :(得分:0)
我一直在努力为此找到解决方案,而且我越来越倾向于尝试回归到SQL数据库的基础知识。书中Refactoring Databases中描述的主要部分之一是迁移。拥有一个支持迁移工作的工具可以解决很多问题,只要你能接受用简单的方式编写所有上下脚本,SQL可能就非常合适了。
我发现.NET堆栈的一个工具是Rob Reynold Roundhouse。我还没有尝试过,但它似乎很有希望虽然有点过时了。