我正在使用FSharp.Data SqlDataProvider(类型提供程序)来访问我的数据.尽管这是将数据转换为F#类型的非常好的方法,但显然需要在我想编译代码的每个开发环境中都有一个具有正确模式的数据库.
是否有任何技巧可以在编译期间不要求使用正确的模式安装数据库?像静态模式文件或条件编译?(通常,应用程序可以在不安装数据库的情况下执行)
假设你有以下递归记录类型
type Parent = {
Name : string
Age : int
Children : Child list }
and Child = {
Name : string
Parent : Parent option }
Run Code Online (Sandbox Code Playgroud)
我可以轻松地创建实例
module Builder =
let create name kids =
let rec makeChild kid = { kid with Parent = parent |> Some }
and parent =
{
Name = name
Age = 42
Children = children
}
and children = kids |> List.map makeChild
parent
let createChild name =
{ Child.Name = …Run Code Online (Sandbox Code Playgroud) 让我们想象一下,我想基于Uncle Bobs Clean Architecture实现一个ASP.NET应用程序。据我了解:
依赖性规则说,仅允许从外圈到内圈的依赖性。
据我了解,依赖性规则不仅与控制流有关,而且还与代码级依赖性有关。
但是:为了使“网关”圈子中有一个Asp.Net控制器,必须从Asp.Net Controller类派生。
问题:这不会违反依赖性规则,因为这会导致从“网关”圈子到“框架”圈子的编译时依赖性吗?
更新:我在最近的博客文章https://plainionist.github.io/Implementing-Clean-Architecture-AspNet/中更详细地讨论了这个问题