2011-09-12 41 views
0

我开始学习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的误差=用户]

任何想法修复它?

回答