【问题标题】:Naming Table and Columns in Fluent NHibernateFluent NHibernate 中的命名表和列
【发布时间】:2012-01-07 23:05:57
【问题描述】:

我试图通过在流利的 Nhibernate 中访问其类映射的 Table("") 和 Column("") 属性来更改我的 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 数据库中出现的表名和列名不是我指定的名称,而是全部小写,即员工 -> 员工和 EmpFirstName -> empfirstname。

如何设置我的表和列名,使其具有我在员工映射中指定的确切字母大小写?

谢谢, 标记

【问题讨论】:

    标签: nhibernate postgresql naming fluent


    【解决方案1】:

    我更喜欢 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

    【讨论】:

      【解决方案2】:

      尝试为 NHibernate 设置 autoquote 选项。

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

      我猜问题出在this

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

      【讨论】:

      猜你喜欢
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多