2011-11-07 56 views
0

我有一個表或域實體ChargaOperation,它被映射到表[ChargeOperation] 並與它自己有多對多的關係。這就像是抵消了客戶的債務或分配樹(父母和1級子女)。如何將colum(操作時間)添加到多對多關係表中?

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]具有字段:

  • SourceId
  • Subject ID。

    SourceId是一個父代的ChargeOperation.Id & subjectId是一個孩子(IList DistributedDebts之一)。 它是確定的,直到我必須添加一個時間分配的每一個操作和改變[Distribtutions]這樣的表的字段:

    • 的sourceID
    • SubjectId
    • TimeOfOperation

現在只有一個機會去做,就是創建一個分佈圖的映射,打破多對多關係並創建兩個關係一對多關係。 我該如何避免它,只是寫timeOfOperation到[Distribtutions]。 (我閱讀它的視圖,所以它不是一個閱讀的問題)

+0

你絕對應該打破多對多的關係,因爲現在它不是真正的關係。你的發行版現在已經是一個完整的實體(甚至是概念上的),所以只要讓它變得更清晰。 – ovolko

回答

0

如果您正在使用SQL Server,您可以將默認值GetDate()添加到timeOfOperation列。

然後,只要將多對多表格插入到timeOfOperation列中,就會收到當前的日期時間。既然你說這個列是從視圖中讀出的,那麼你根本就不需要映射它。

+0

沒有。我不需要系統時間。我需要節省我的操作時間 –

相關問題