从我到目前为止读到的有关类型提供程序的信息来看,我想知道它们是否可以用于为F#实现一个好的ORM。
我认为数据库行可以由具有正确类型属性的对象表示,允许对列值进行类型安全的读写访问,类型提供程序实现在编译时自动检查当前数据库模式。
这是一个现实有用的场景吗?
答案 0 :(得分:1)
如果我是正确的,那么Type提供程序将是F#编译器的“插件”。他们将在编译代码时插入F#编译器无法找到的类型信息。所以基本上在编译F#代码时,编译器会要求类型提供者填写F#编译器不知道的类型信息。这也意味着它仍然是静态类型,即在编译时识别类型。
如果上述理解是正确的,那么在ORM的情况下,您将需要为您的关系方案实现类型提供程序,并且F#编译器将使用此类型提供程序来编译您的代码以“填充”表示ORM映射的类型。
如果你看一下ORM,它们不仅仅是将关系数据映射到对象,还提供各种操作,如查询,更新等基础关系数据。在我看来,我不认为此时F#类型提供商对ORM有好处,但我可能错了:)
答案 1 :(得分:1)
是的,这是类型提供者的有趣用法。其中一个示例就是这样,请参阅http://msdn.microsoft.com/en-us/library/hh361033(v=vs.110).aspx