문제

나는 다음에 문제가있다 :

NHibernate.Cfg.Configuration.SetProperties()

유물을 받아들이지 않음 : Nhibernateconfighandler

나는 메시지를 받는다 :

오류 30 'nhibernate.cfg.configuration.setproperties (system.collections.generic.idictionary)에 대한 가장 잘로드 된 메소드 일치에 가장 유효하지 않은 인수가 있습니다.

그리고

오류 31 인수 '1': 'system.collections.idictionary'에서 'system.collections.generic.idictionary'로 변환 할 수 없습니다.

조언 해주세요.


전체 방법 :

/// <param name="config">NHibernate configuration</param>
public ISessionFactory GetSessionFactoryFor(NHibernateConfigHandler config)
{
if (config == null)
    throw new ArgumentNullException("config may not be null nor empty");

ISessionFactory sessionFactory = GetSessionFactoryFor(config.MappingAssembly);

//  Failed to find a cached SessionFactory so make a new one.
if (sessionFactory == null)
{
    NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();

    cfg.SetProperties(config.Properties); //THIS LINE

    cfg.AddAssembly(config.MappingAssembly);

    //  Now that we have our Configuration object, create a new SessionFactory
    sessionFactory = cfg.BuildSessionFactory();

    if (sessionFactory == null)
    {
        throw new InvalidOperationException("cfg.BuildSessionFactory() returned null.");
    }

    HttpRuntime.Cache.Add(config.MappingAssembly, sessionFactory, null, DateTime.Now.AddDays(7),
        TimeSpan.Zero, CacheItemPriority.High, null);
}

return sessionFactory;

}

도움이 되었습니까?

해결책

setProperties의 서명입니다

public NHibernate.Cfg.Configuration SetProperties(System.Collections.Generic.IDictionary<string,string> newProperties)
    Member of NHibernate.Cfg.Configuration

SetProperties는 유형의 Idictionary, 즉 일반 사전의 매개 변수를 취하고 있습니다. 그리고 당신은 유물을 통과하려고합니다. 그것이 오류의 이유입니다.

Nhibernateconfighandler의 속성 유형을 System.collections.generic.idictionary로 변경할 수 있습니다. 또는 system.collections.generic.idictionary를 만들고 system.collections.idictionary에서 모든 값을 복사하십시오.

Identicary (System.Collections)에 대한 일반 사전 (System.Collections.generic)을 사용하는 것이 항상 효율적입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top