我正在學習NHibernate,但失敗了。我覺得錯誤信息不準確。NHibernate奇怪的錯誤
請幫忙。
錯誤消息是
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 . . .
類文件
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; }
}
}
映射
<?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>
配置:
<?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>
主類
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);
}
}
如果你使用流利的NHibernate: Not.LazyLoad(); – leojh