【发布时间】:2009-04-07 05:34:38
【问题描述】:
我正在扩展 Fluent NHibernate 以便更好地与 F# 一起使用(即引用支持),并希望得到一些关于去流化 API 的反馈。 F# 要求使用返回值,除非它们是类型单位。所以这最终会以“|> ignore”终止每一行:
type ProductMap() as m = inherit QClassMap<Product>() do
let x = Unchecked.defaultof<Product>
m.Id <@ x.Id @> |> ignore
m.Map <@ x.Name @> |> ignore
m.Map <@ x.Price @> |> ignore
(m.HasManyToMany <@ seq x.StoresStockedIn @>)
.Cascade.All()
.Inverse()
.WithTableName("StoreProduct") |> ignore
我的第一反应是向基类添加更多方法,以便它们返回单位。例如,“IdI”和“MapI”:
...
m.IdI <@ x.Id @>
m.MapI <@ x.Name @>
m.MapI <@ x.Price @>
...
但这需要特定的重载,长链仍然需要|>忽略。我还考虑过使用 Done 属性扩展对象:
(m.Id <@ x.Id @>).Done
(m.Map <@ x.Name @>).Done
(m.Map <@ x.Price @>).Done
(m.HasManyToMany <@ seq x.StoresStockedIn @>)
.Cascade.All()
.Inverse()
.WithTableName("StoreProduct").Done
你怎么看?
【问题讨论】:
标签: api fluent-nhibernate f# fluent-interface