-1

所以,我遇到了FluentNHibernate的问题。我已经映射的所有特性,我联系我的表,我得到一个错误:FluentNHibernate:创建SessionFactory时使用了无效或不完整的配置

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

不能确定究竟是什么问题,因为我创建的映射,类和基于以前的程序数据库。在这里我创建了一个SessionFactory的数据层类是:

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; 
     } 

    } 
} 
} 

具体类我要放置在数据库中的信息是:

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'属性,并将其添加到你的问题。它通常很详细,通常会告诉你确切的问题。 –

回答

0

您可能错过了Oracle托管客户端。 您需要将其引用/可访问才能使用OracleManagedDataClientConfiguration的

如果可能的话,刚刚经历的NuGet安装相应的包,看看那是什么造成你的例外: https://www.nuget.org/packages/Oracle.ManagedDataAccess/

Install-Package Oracle.ManagedDataAccess

相关问题