我开始学习NHibernate。我安装了最新版本并尝试运行一个非常简单的应用程序。还有一类User
:“插入用户时出现解析查询时出错”
public class User
{
public virtual Guid Id { get; set; }
public virtual String Name { get; set; }
public virtual int Age { get; set; }
public override string ToString()
{
return string.Format("User{name='{0}', age={1}}", Name, Age);
}
}
它的映射是:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="cs_nhibernate_test1"
namespace="cs_nhibernate_test1">
<class name="User">
<id name="Id">
<generator class="guid" />
</id>
<property name="Name" />
<property name="Age" />
</class>
</hibernate-mapping>
然后,我的测试程序是这样的:
class Program
{
static void Main(string[] args)
{
var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly(typeof (User).Assembly);
new SchemaExport(cfg).Execute(false, true, true);
ISessionFactory sessionFactory = cfg.BuildSessionFactory();
using (ISession session = sessionFactory.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
User user = new User { Name = "John Smith", Age = 25 };
session.Save(user);
transaction.Commit();
}
}
}
}
和hibernate.cfg.xml是这样的:
<?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>
该项目是.NET 4.0项目,所有需要的文件似乎要在输出文件夹。
我得到的错误是:
NHibernate的:INSERT INTO用户(姓名,年龄,身份证)VALUES(@ P0,@ P1, @ P2); @ P0 = '约翰·史密斯'[类型:字符串(0)],@ P1 = 25 [类型:的Int32 (0)],@ P2 = 4b0d4bbf- 7d3c-4bff-908D-ecddfdd8a5cd [类型:GUID(0)]
未处理的异常:系统。 Data.SqlServerCe.SqlCeException:有 解析查询时出错。 [令牌行号= 1,令牌线 偏移量= 13,托克n的误差=用户]
任何想法修复它?
omfg,你是绝对正确的。谢谢! – agibalov