NHibernate weird error
.net, nhibernate
Solution
As the others say - you must make your properties virtual. But this is only needed if you want your entity to be able to lazy load, read up on it here http://nhforge.org/wikis/howtonh/lazy-loading-eager-loading.aspx
If you dont want lazy loading you can disable it
<class name="Product" Lazy="false">
Then you wont need virtual properties.
Problem
I am learning NHibernate, but failed. I sense that the error messages are not accurate. Please help . error message is ``` The following types may not be used as proxies: SecondSolution.Domain.Product: method get_Id should be 'public/protected virtual' or 'protected internal virtual' SecondSolution.Domain.Product: method set_Id should be 'public/protected virtual' or 'protected internal virtual' SecondSolution.Domain.Product: method get_Name should be 'public/protected virtual' or 'protected internal virtual' SecondSolution.Domain.Product: method set_Name should be 'public/protected virtual' or 'protected internal virtual' SecondSolution.Domain.Product: method get_Category should be 'public/protected virtual' or 'protected internal virtual' SecondSolution.Domain.Product: method set_Category should be 'public/protected virtual' or 'protected internal virtual' SecondSolution.Domain.Product: method get_Discontinued should be 'public/protected virtual' or 'protected internal virtual' SecondSolution.Domain.Product: method set_Discontinued should be 'public/protected virtual' or 'protected internal virtual' at NHibernate.Cfg.Configuration.ValidateEntities() in c:\Users\oskar.berggren\Documents\Projects\nhibernate-core-3\src\NHibernate\Cfg\Configuration.cs:line 1052 at NHibernate.Cfg.Configuration.Validate() in c:\Users\oskar.berggren\Documents\Projects\nhibernate-core-3\src\NHibernate\Cfg\Configuration.cs:line 959 at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\Users\oskar.berggren\Documents\Projects\nhibernate-core-3\src\NHibernate\Cfg\Configuration.cs:li ne 1251 at SecondSolution.Program.Main(String[] args) in C:\vs_workspace\SecondSolution\SecondSolution\Program.cs:line 22 Press any key to continue . . . ``` Class file ``` using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SecondSolution.Domain { class Product { public Product() { this.Name = "John"; } public Guid Id { get; set; } public string Name { get; set; } public string Category { get; set; } public bool Discontinued { get; set; } } } ``` mapping ``` <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="SecondSolution" namespace="SecondSolution.Domain"> <class name="Product"> <id name="Id"> <generator class="guid" /> </id> <property name="Name" /> <property name="Category" /> <property name="Discontinued" /> </class> </hibernate-mapping> ``` config: ``` <?xml version="1.0" encoding="utf-8" ?> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property> <property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property> <property name="connection.connection_string">Data Source=FirstSample.sdf</property> <property name="show_sql">true</property> </session-factory> </hibernate-configuration> ``` main class ``` static void Main(string[] args) { try { Configuration cfg = new Configuration(); cfg.Configure("Mappings/hibernate.cfg.xml"); //cfg.Configure(); cfg.AddAssembly(typeof(Product).Assembly); NHibernate.ISessionFactory m_SessionFactory = cfg.BuildSessionFactory(); NHibernate.ISession session = m_SessionFactory.OpenSession(); Product product = new Product(); session.SaveOrUpdate(product); } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); } } ```