Nhibernate 如何将列(操作时间)添加到多对多关系表中?

Nhibernate 如何将列(操作时间)添加到多对多关系表中?,nhibernate,many-to-many,Nhibernate,Many To Many,我有一个表或域实体ChargOperation,它映射到表[ChargeOperation] 与自身有着多对多的关系。这就像客户债务的抵销或分配树(父母和1级子女) 表[Distributions]包含以下字段: 源ID 主观性的 SourceId是父ChargeOperation的id。id&subjectId是子项(IList DistributedEBT之一)。 没关系,直到我必须为表[Distributions]的分发和更改字段的每个操作添加一个时间,如下所示: public Cha

我有一个表或域实体ChargOperation,它映射到表[ChargeOperation] 与自身有着多对多的关系。这就像客户债务的抵销或分配树(父母和1级子女)

表[Distributions]包含以下字段:

  • 源ID
  • 主观性的

    SourceId是父ChargeOperation的id。id&subjectId是子项(IList DistributedEBT之一)。 没关系,直到我必须为表[Distributions]的分发和更改字段的每个操作添加一个时间,如下所示:

     public ChargeOperationMap()
        {
            Table("ChargeOperations");
            Id(x => x.Id).GeneratedBy.Identity();
            Map(x => x.Amount).Not.Nullable().Column("Amount");
    
    
            HasManyToMany(x => x.DistributedDebts).Table("Distributions]")
                         .ParentKeyColumn("SourceId")
                         .ChildKeyColumn("SubjectId")
                         .Cascade.All();
        }
    
    • 源ID
    • 主体
    • 运行时间
现在唯一的机会就是创建分布映射,打破多对多关系,创建两个一对多关系。
我如何避免它,只需将操作时间写入[发行版]。(我是用视图阅读的,所以这不是阅读的问题)

如果您使用的是SQL Server,您可以始终在
timeOfOperation
列中添加默认值
GetDate()


然后,每当将多对多表插入到
timeOfOperation
列时,就会收到当前日期时间。既然您说此列是从视图中读取的,那么您根本不需要映射它。

您肯定应该打破多对多关系,因为现在它不是真正的多对多关系。您的发行版现在是一个成熟的实体本身(甚至在概念上),所以只需让everbody更清楚就可以了。我不需要smth的系统时间。我需要节省我的手术时间
 public ChargeOperationMap()
    {
        Table("ChargeOperations");
        Id(x => x.Id).GeneratedBy.Identity();
        Map(x => x.Amount).Not.Nullable().Column("Amount");


        HasManyToMany(x => x.DistributedDebts).Table("Distributions]")
                     .ParentKeyColumn("SourceId")
                     .ChildKeyColumn("SubjectId")
                     .Cascade.All();
    }