Я расширяю 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
Что ты думаешь?