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

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

感谢您的帮助。

【问题讨论】:

    标签: fluent-nhibernate


    【解决方案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();
        }
    }
    

    【讨论】:

    【解决方案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);
        }        
    }
    

    【讨论】:

    • 也许存在某种方式可以跳过所有这些地图调用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多