F #: поиск по объекту неопределенного типа при использовании FluntNHibernate - PullRequest
0 голосов
/ 20 ноября 2010

Я пытаюсь настроить NHibernate в проекте F # с помощью FluentNHibernate.

 static member GetNHibernateConfig = 
    Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008
                .ConnectionString(fun c -> c.FromConnectionStringWithKey("connectionString") |> ignore)
                    .ShowSql())

Подсветка Visual Studio "c.FromConnectionStringWithKey" с ошибкой:

Поиск объекта неопределенного типа на основе предшествующей информациик этой точке программы.Аннотации типа могут потребоваться до этой точки программы, чтобы ограничить тип объекта.Это может позволить разрешить поиск.

Ответы [ 2 ]

4 голосов
/ 20 ноября 2010

Я ничего не знаю об этом, но из поиска в Интернете API-документов, я бы попробовал меняется

fun c ->

до

fun (c:ConnectionStringBuilder) -> 

потому что это

http://fluentnhibernate.org/api/FluentNHibernate.Cfg.Db/PersistenceConfiguration%602.htm#ConnectionString

подсказывает мне, что это может быть тип c.

EDIT:

(Видимо, тип MsSqlConnectionStringBuilder.)

В любом случае, в более общем случае, если вы сталкиваетесь с F #, не определяя лямбда-типы, когда C # делает, то, вероятно,

  • вы используете метод с несколькими перегрузками
  • некоторые подмножества перегрузок используют Action или Func

и проще всего явно добавить тип делегата Action или Func, чтобы F # правильно разрешал перегрузку. В этом случае я думаю, что изменение

.ConnectionString(fun c -> ...)

до

.ConnectionString(Action<MsSqlConnectionStringBuilder>(fun c -> ...))

исправляет это, и часто это самый удобный способ разблокировки.

1 голос
/ 20 ноября 2010

Не знаю почему, но объявление типа параметра функции работает:

Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql2008
            .ConnectionString(fun (c: MsSqlConnectionStringBuilder) -> c.FromConnectionStringWithKey("connectionString") |> ignore)
                .ShowSql())

В любом случае, вам будет лучше использовать FunctionalNHibernate вместо FluentNHibernate в F #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...