-1

그래서 FluentNHibernate에 문제가 있습니다. 나는 모든 속성을 매핑 한, 내 테이블을 연결 한 나는 오류가 발생 : 나는 매핑, 클래스와 이전의 프로그램을 기반으로 데이터베이스를 생성하기 때문에 문제가 무엇인지FluentNHibernate : SessionFactory를 생성하는 동안 올바르지 않거나 불완전한 구성이 사용되었습니다.

An invalid or incomplete configuration was used creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.

정말 확실하지. 이다

namespace WTF.Edit1 
{ 
    public class DataLayer 
    { 
    private static ISessionFactory _factory = null; 
    private static object objLock = new object(); 


    public static ISession GetSession() 
    { 

     if (_factory == null) 
     { 
      lock (objLock) 
      { 
       if (_factory == null) 
        _factory = CreateSessionFactory(); 
      } 
     } 

     return _factory.OpenSession(); 
    } 

    //konfiguracija i kreiranje session factory 
    private static ISessionFactory CreateSessionFactory() 
    { 
     try 
     { 
      var cfg = OracleManagedDataClientConfiguration.Oracle10 
      .ConnectionString(c => 
       c.Is("Data Source=datasource:1111/AAAA;User Id=user;Password=pass")); 

      return Fluently.Configure() 
       .Database(cfg) 
       .Mappings(m => m.FluentMappings.AddFromAssemblyOf<KorisnikMapiranja>()) 
       .BuildSessionFactory(); 
     } 
     catch (Exception ec) 
     { 
      System.Windows.Forms.MessageBox.Show(ec.Message); 
      return null; 
     } 

    } 
} 
} 

특정 클래스가 나는 데이터베이스에서 정보를 배치 할 : 나는 SessionFactory를 생성 데이터 영역 클래스입니다

namespace WTF.Edit1.Podaci 
{ 
    public class Korisnik 
    {  
     public virtual string Tip { get; set; } 
     public virtual string Ime { get; set; } 
     public virtual string Prezime { get; set; } 
     public virtual string KorisnickoIme { get; set; } 
     public virtual string Lozinka { get; set; } 
     public virtual string PonovljenaLozinka { get; set; } 
     public virtual string Email { get; set; } 
     public virtual string Pol { get; set; } 

     public virtual IList<Recept> Recepti { get; set; } 
     public virtual IList<Komentar> Komentari { get; set; } 
     public virtual IList<Ocena> Ocene { get; set; } 

     public Korisnik() 
     { 
      Recepti = new List<Recept>(); 
      Komentari = new List<Komentar>(); 
      Ocene = new List<Ocena>(); 
     } 
    } 

    public class User : Korisnik 
    { 
    } 

    public class Admin : Korisnik 
    { 
    } 
} 

그리고 매핑은 다음과 같습니다

namespace WTF.Edit1.Mapiranja 
{ 
class KorisnikMapiranja : ClassMap<Korisnik> 
{ 
    public KorisnikMapiranja() 
    { 
     Table("KORISNIK"); 

     Id(x => x.KorisnickoIme, "USERNAME"); 

     Map(x => x.Ime, "IME"); 
     Map(x => x.Prezime, "PREZIME"); 
     Map(x => x.Email, "EMAIL"); 
     Map(x => x.Lozinka, "PASSWORD"); 
     Map(x => x.PonovljenaLozinka, "PASSREPEAT"); 
     Map(x => x.Pol, "POL"); 
     Map(x => x.Tip, "TIP"); 

     HasMany(x => x.Recepti).KeyColumn("USERNAME"); 
     HasMany(x => x.Komentari).KeyColumn("USERNAME"); 
     HasMany(x => x.Ocene).KeyColumn("USERNAME"); 
    } 
} 

class UserMapiranja : SubclassMap<User> 
{ 
    public UserMapiranja() 
    { 
     Table("USERI"); 

     KeyColumn("USERNAME"); 
    } 
} 

class AdminMapiranja : SubclassMap<Admin> 
{ 
    public AdminMapiranja() 
    { 
     Table("ADMIN"); 

     KeyColumn("USERNAME"); 
    } 
} 
} 

어떤 아이디어? 나는 연구하고 대답을 찾으려고했지만 아무 것도 나를 위해 일했습니다.

+2

당신이 최상위 예외의'InnerException' 속성을 검사하고에 추가 할 수 있습니다 :

가능하면 그 당신의 예외의 원인이 무엇인가하면, 바로 볼 수 nuget을 통해 해당 패키지를 설치 너의 질문. 일반적으로 잘 설명되어 있으며 정확한 문제를 알려줍니다. –

답변