我延长连贯NHibernate更好使用f#(即报价支持),并希望一些反馈de-fluenting API。f#要求返回值被使用,除非他们单位类型。这最终终止与“| >忽略”每一行:
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
我的第一反应是向基类添加更多的方法所以他们返回单位。例如,“伊迪”和“MapI”:
...
m.IdI <@ x.Id @>
m.MapI <@ x.Name @>
m.MapI <@ x.Price @>
...
但这需要特定的过载,和长链仍需要| >忽视。我还考虑扩展对象属性:
(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
你怎么认为?