我無法弄清楚,爲什麼NHibernate的是這樣做的。NHibernate的自動重命名在C#中列名
這裏是我的表的一部分,MS SQL
CREATE TABLE Person (
nameFamily text,
nameGiven text
)
這裏是Person.hbm.xml
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Infosci.Dpd.Model.Person,Infosci.Dpd.Model" table="Person" lazy="true">
<property type="string" name="NameGiven" column="nameGiven" />
<property type="string" name="NameFamily" column="nameFamily" />
</class>
</hibernate>
在我Person.cs我的名字我的財產,如以下
string NameFamily
{
get ;
set ;
}
string NameGiven
{
get ;
set ;
}
然後我嘗試使用以下代碼創建記錄
ISession session = NHibernateHelper.GetCurrentSession();
Person person = new Person();
person.NameFamily = "lee";
session.Save(person);
,什麼是奇怪的是,當我嘗試做執行它,NHibernate的實際執行下列
NHibernate: INSERT INTO Person (name_family,name_given.......
所以這裏的NHibernate從NameFamily chagne我的列名NAME_FAMILY雖然我沒有指定列更改列名名稱。
這是一個NHibernate的錯誤?或者我需要做什麼配置?
這是我的休眠配置文件
<?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.MsSql2000Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Data Source=xxxxxxx;Initial Catalog=xx;Integrated Security=True;Pooling=False;User ID=xxxx;Password=xxxx</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
而且這是我創建了一個SessionFactory
sessionFactory = new `Configuration().Configure("hibernate.cfg.xml").
SetNamingStrategy(ImprovedNamingStrategy.Instance).
AddFile("Person.hbm.xml").
BuildSessionFactory();`
或者您可以不指定命名策略而不指定默認策略。 – 2009-02-16 08:56:38