如何在 Fluent NHibernate ClassMap 类中指定表名?

Posted

技术标签:

【中文标题】如何在 Fluent NHibernate ClassMap 类中指定表名?【英文标题】:How to specify table name in Fluent NHibernate ClassMap class? 【发布时间】:2010-10-12 15:27:17 【问题描述】:

我是 NHibernate 的新手,正在尝试使用 Fluent 进行映射。我的实体类名称与它必须映射到的数据库表名称不同。 我正在使用从ClassMap<> 派生的映射类,但我无法指定表名:来自ClassMap 的属性TableName 是只读的。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

请改用Table("table_name")

【讨论】:

这是现在。截至 2009 年 9 月 Table("table_name");【参考方案2】:

效果如何?

public class UserAccountMap : ClassMap<UserAccount> 
    public UserAccountMap() 
        Table("User");
        Id(x => x.UserID, "UserID").GeneratedBy.Identity();
        Map(x => x.FirstName, "FirstName").Length(50)
            .Not.Nullable();
        Map(x => x.LastName, "LastName").Length(50)
            .Not.Nullable();
    

【讨论】:

用户是保留关键字。用`括起来。见***.com/a/2879630/475882【参考方案3】:

上面的例子把我引向了正确的方向。这对我有用。我的班级名称是“Party”,我的表名是“prty.Party”。

public class PartyMap : ClassMap<Party>

    public PartyMap()
    
     Table("prty.Party");
     Id(x => x.PartyID);
     Map(x => x.PartyTypeLID);
     Map(x => x.OrganizationTypeLID);
     Map(x => x.PreferredContactMethodLID);
     Map(x => x.PrimaryLanguageLID);
     Map(x => x.PartyVID);
     Map(x => x.BeginDate);
     Map(x => x.EndDate);
     Map(x => x.RowDescriptor);
     Map(x => x.RowModifiedDate);
     Map(x => x.RowModifiedBy);
     Map(x => x.RowCreatedDate);
     Map(x => x.RowCreatedBy);
            

【讨论】:

也许存在某种方式可以跳过所有这些地图调用?

以上是关于如何在 Fluent NHibernate ClassMap 类中指定表名?的主要内容,如果未能解决你的问题,请参考以下文章

Fluent nHibernate - 如何在联结表上映射非键列?

如何在Fluent NHibernate中映射受保护的集合?

Fluent NHibernate:如何将整个类映射为只读?

如何告诉 Fluent NHibernate 不要映射类属性

如何使用 Fluent-NHibernate 和 MySQL 指定自动递增 (int) 标识列

如何在 Fluent NHibernate 中创建基实体和基类映射