13. januar 2007 - 16:09Der er
25 kommentarer og 1 løsning
NHibernate problemer
Hej,
Jeg har forsøgt at arbejde med NHibernate ved hjælp af Microsoft Visual C# 2005 Express Edition. Jeg har prøvet udfra flere forskellige tutorials jeg fandt via google - men intet er lykkes.
Er der nogen der enten kender en god tutorial, hvor ALT er forklaret, eller er der en der kan guide mig igennem hvordan jeg får det op og køre (evt. ved at sende mig et project :) )
Jeg har en PostGres-database til formålet. tabel: persons (id, name, address)
CREATE TABLE T1 (F1 INTEGER PRIMARY KEY, F2 VARCHAR(50)) GO INSERT INTO T1 VALUES(1, 'A') GO INSERT INTO T1 VALUES(2, 'BB') GO INSERT INTO T1 VALUES(3, 'CCC') GO
namespace Test.Hibernate { public class T1 { private int f1; private string f2; public int F1 { get { return f1; } set { f1 = value; } } public string F2 { get { return f2; } set { f2 = value; } } } public class TestClass { public static void SelectOne() { Configuration cfg = new Configuration(); cfg.AddXmlFile("t1mapping.xml"); ISessionFactory sf = cfg.BuildSessionFactory(); ISession s = sf.OpenSession(); T1 r = (T1)s.Load(typeof(T1), 2); Console.WriteLine(r.F1 + " " + r.F2); s.Close(); } public static void SelectAll() { Configuration cfg = new Configuration(); cfg.AddXmlFile("t1mapping.xml"); ISessionFactory sf = cfg.BuildSessionFactory(); ISession s = sf.OpenSession(); IList all = s.Find("FROM T1 AS t1"); for(int i = 0; i < all.Count; i++) { T1 r = (T1)all[i]; Console.WriteLine(r.F1 + " " + r.F2); } s.Close(); } public static void Main(string[] args) { XmlConfigurator.Configure(); SelectOne(); SelectAll(); } } }
2007-01-13 16:31:14,296 [1980] ERROR NHibernate.Cfg.Configuration - Could not co mpile the mapping document NHibernate.MappingException: persistent class Test.Hibernate.T1, Test, Version=1 .0.2100.41493, Culture=neutral, PublicKeyToken=null not found ---> System.TypeLo adException: Could not load type 'Test.Hibernate.T1, Test, Version=1.0.2100.4149 3, Culture=neutral, PublicKeyToken=null', check that type and assembly names are correct at NHibernate.Util.ReflectHelper.ClassForName(String name) at NHibernate.Cfg.Binder.ClassForFullNameChecked(String fullName, String erro rMessage) --- End of inner exception stack trace --- at NHibernate.Cfg.Binder.ClassForFullNameChecked(String fullName, String erro rMessage) at NHibernate.Cfg.Binder.BindClass(XmlNode node, PersistentClass model, Mappi ngs mapping) at NHibernate.Cfg.Binder.BindRootClass(XmlNode node, RootClass model, Mapping s mappings) at NHibernate.Cfg.Binder.BindRoot(XmlDocument doc, Mappings model) at NHibernate.Cfg.Configuration.AddValidatedDocument(XmlDocument doc) 2007-01-13 16:31:14,343 [1980] ERROR NHibernate.Cfg.Configuration - Could not co nfigure datastore from file: t1mapping.xml NHibernate.MappingException: persistent class Test.Hibernate.T1, Test, Version=1 .0.2100.41493, Culture=neutral, PublicKeyToken=null not found ---> System.TypeLo adException: Could not load type 'Test.Hibernate.T1, Test, Version=1.0.2100.4149 3, Culture=neutral, PublicKeyToken=null', check that type and assembly names are correct at NHibernate.Util.ReflectHelper.ClassForName(String name) at NHibernate.Cfg.Binder.ClassForFullNameChecked(String fullName, String erro rMessage) --- End of inner exception stack trace --- at NHibernate.Cfg.Binder.ClassForFullNameChecked(String fullName, String erro rMessage) at NHibernate.Cfg.Binder.BindClass(XmlNode node, PersistentClass model, Mappi ngs mapping) at NHibernate.Cfg.Binder.BindRootClass(XmlNode node, RootClass model, Mapping s mappings) at NHibernate.Cfg.Binder.BindRoot(XmlDocument doc, Mappings model) at NHibernate.Cfg.Configuration.AddValidatedDocument(XmlDocument doc) at NHibernate.Cfg.Configuration.AddXmlReader(XmlTextReader hbmReader) at NHibernate.Cfg.Configuration.AddXmlFile(String xmlFile)
jeg kan ikke huske om den version egentligt er nødvenig, men den er et mit eksempel (det er lang tid siden at jeg lavede det så jeg kan ikke huske præcist hvorfor)
Ok. Jeg har nu denne linje i konfigurationen: <class name="Test.Hibernate.T1, ConsoleApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="T1">
Hvilket giver mig en anden stacktrace, nemlig:
NHibernate.HibernateException: Could not create the driver from NHibernate.Drive r.NpgsqlDriver. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> NHibernate.HibernateException: The IDbCommand and IDbConnection implementation in the assembly Npgsql could not be found. Please ensure that the assembly Npgsql is in the Global Assembly Cac he or in a location that NHibernate can use System.Type.GetType(string) to load the types from. at NHibernate.Driver.ReflectionBasedDriver..ctor(String driverAssemblyName, S tring connectionTypeName, String commandTypeName) at NHibernate.Driver.NpgsqlDriver..ctor() --- End of inner exception stack trace --- at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOn ly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& b NeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCach e) at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisi bilityChecks, Boolean fillCache) at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.Activator.CreateInstance(Type type) at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary setti ngs) --- End of inner exception stack trace --- at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary setti ngs) at NHibernate.Connection.ConnectionProvider.Configure(IDictionary settings) at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDic tionary settings) at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary properties) at NHibernate.Cfg.Configuration.BuildSettings() at NHibernate.Cfg.Configuration.BuildSessionFactory() at Test.Hibernate.TestClass.SelectOne() in C:\Documents and Settings\Administ rator\My Documents\Visual Studio 2005\Projects\ConsoleApplication1\ConsoleApplic ation1\Program.cs:line 44 at Test.Hibernate.TestClass.Main(String[] args) in C:\Documents and Settings\ Administrator\My Documents\Visual Studio 2005\Projects\ConsoleApplication1\Conso leApplication1\Program.cs:line 69
interface NHibernate.ISession The main runtime interface between a Java application and Hibernate. This is the central API class abstracting the notion of a persistence service.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.