如何使用 NHibernate 在 CompositeId 映射中设置列

Posted

技术标签:

【中文标题】如何使用 NHibernate 在 CompositeId 映射中设置列【英文标题】:How can i set a Column in a CompositeId mapping with NHibernate 【发布时间】:2015-05-07 04:15:14 【问题描述】:

我有一个带有 NHibernate 的 Composite Id 映射,我想在所有这些 Id 中设置一列。有可能吗?

public class MapProduction : ClassMap<Production>

    public MapProduction()
    
        CompositeId()
            .KeyProperty(c => c.ProductionCode)
            .KeyProperty(c => c.Cycle)
            .KeyProperty(c => c.Crop)
            .KeyProperty(c => c.TechnologyLevel);
        Map(c => c.Area).Column("A_ARE");
        Map(c => c.Productivity).Column("P_ARE");
        Map(c => c.syncStatus).ReadOnly();
    

如果我只有一个 id,我可以设置一个 Column,但使用复合我不能。

我该怎么做?

【问题讨论】:

【参考方案1】:

我发现了如何做到这一点。 在 CompositeId 中有一个参数用于添加表引用。

public class MapProduction : ClassMap<Production>

    public MapProduction()
    
        CompositeId()
            .KeyProperty(c => c.ProductionCode, "P_PRO")
            .KeyProperty(c => c.Cycle, "C_CIC")
            .KeyProperty(c => c.Crop, "C_CUL")
            .KeyProperty(c => c.TechnologyLevel, "C_NVT");
        Map(c => c.Area).Column("A_ARE");
        Map(c => c.Productivity).Column("P_ARE");
        Map(c => c.syncStatus).ReadOnly();
    

【讨论】:

以上是关于如何使用 NHibernate 在 CompositeId 映射中设置列的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 NHibernate 迭代整个表?

如何使用 LINQ 在 NHibernate 3 中实现关键字搜索?

NHibernate - 如何使用 where 子句保存对象

如何使用 DISTINCT 在 NHibernate SQL 查询中进行分页

在每个请求使用会话时如何让 NHibernate 重试死锁事务?

如何在 nHibernate 中添加 NOLOCK?