我有一个表或域实体ChargaOperation,它映射到表 [ChargeOperation] 并与自己有多对多的关系。这就像抵消了客户的债务或分配树(父母和1个孩子的水平)。
ChargeOperation
{
int Id,
decimal Amount,
IList<ChargeOperation> DistributedDebts // a tree of distributions using many to many mapping
}
在 [Distribtions] 表的帮助下实现的关系,该表在代码中具有映射并且映射如下:
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();
}
表 [Distribtutions] 有字段:
SubjectId。
SourceId是父级ChargeOperation.Id&amp;的ID。 subjectId是一个孩子(IList DistributedDebts之一)。 没关系,直到我必须为每个分发操作添加一个时间并更改表格 [Distribtutions] 的字段:
现在只有一个机会是创建Distribtutions的映射,打破多对多关系并创建两个一对多关系。 如何避免它,只需将timeOfOperation写入 [Distribtutions] 。 (我以一种观点阅读它,所以这不是一个阅读的问题)
答案 0 :(得分:0)
如果您使用的是SQL Server,则始终可以将GetDate()
的默认值添加到timeOfOperation
列。
然后,只要将多对多表插入timeOfOperation
列,就会收到当前的日期时间。由于您说该列是从视图中读出的,因此您根本不需要映射它。