在Fluent NHibernate中命名表和列

时间:2011-11-28 13:45:09

标签: nhibernate postgresql naming fluent

我尝试通过在流畅的Nhibernate中访问其类图的表("")和列("")属性来更改Employee实体的表名和列名。

public class EmployeeMap : ClassMap<Employee>
{
    public EmployeeMap()
    {
        Table("Employees");
        Id(x => x.Id);
        Map(x => x.FirstName)
           .Column("EmpFirstName");
        Map(x => x.LastName);
           .Column("EmpLastName")
        References(x => x.Store);
     }
 }

但是我没有使用我指定的名称,而是在Postgresql数据库中出现的表名和列名都是小写的,即Employees - &gt;员工和EmpFirstName - &gt; empfirstname。

如何设置我的表名和列名以获得我在员工映射中指定的确切字母大小写?

谢谢, 标记

2 个答案:

答案 0 :(得分:3)

我更喜欢Sly的答案,但你可以逃脱这个(但它很难看):

public class EmployeeMap : ClassMap<Employee>
{
    public EmployeeMap()
    {
        Table("Employees");
        Id(x => x.Id);
        Map(x => x.FirstName)
           .Column("\"EmpFirstName\"");
        Map(x => x.LastName);
           .Column("\"EmpLastName\"")
        References(x => x.Store);
     }
 }

EDIT 这里是链接如何通过命名策略实现这一点: http://manfredlange.blogspot.com/2011/04/fluent-nhibernate-postgresql-and.html

答案 1 :(得分:2)

尝试为NHibernate设置autoquote选项。

<property name="hbm2ddl.keywords">auto-quote</property>

我的想法是问题出在this

  

PostgreSQL认为标识符FOO,foo和“foo”是相同的,但是“Foo”和“FOO”与这三个和彼此不同。