3
我使用IQueryable <>構建批處理查詢。NHibernate映射到使用公共屬性的實體
我已成功地使用視圖獲取信息,以便IQueryable <>可以找到它,但在這種情況下,我無法確定如何映射視圖,因爲它取決於屬性而不是實體的ID。
說我有這個實體和映射:
public class Calculation
{
public virtual int Id { get; set; }
public virtual Organisation Organisation { get; set; }
public virtual Charge Charge { get; set; }
public virtual TransactionTotal TransactionTotal { get; set; }
}
public class CalculationMap : ClassMap<Calculation>
{
public CalculationMap()
{
Id(x => x.Id).GeneratedBy.Identity();
References(x => x.Organisation).Not.Nullable().UniqueKey("OC");
References(x => x.Charge).Not.Nullable().UniqueKey("OC");
}
這是我需要在那裏類:我使用一個觀點給我每個組織和充電總量:
public class TransactionTotal
{
public virtual int Id { get; set; }
public virtual Organisation Organisation { get; set; }
public virtual Charge Charge { get; set; }
public virtual decimal Amount { get; set; }
}
public class TransactionTotalMap : ClassMap<TransactionTotal>
{
public TransactionTotalMap()
{
Id(x => x.Id).GeneratedBy.Identity();
Table("TransactionTotalsView");
References(x => x.Charge).Not.Nullable();
References(x => x.Organisation).Not.Nullable();
Map(x => x.Amount).Precision(15).Scale(2).Not.Nullable();
}
}
其他地方我已經使用了views我已經成功地使用了像HasOne(x => x.TransactionTotal);
這樣的映射,但在這種情況下,我需要告訴Nhibernate使用Organization和Charge屬性作爲鍵。
這甚至可能嗎?如果是這樣,我如何將TransactionTotal類映射到Calculation類?
編輯:我已經在TransactionTotalMap使用CompositeId的建議由@大衛:
CompositeId().KeyProperty(x => x.Organisation.Id).KeyProperty(x => x.Charge.Id);
我仍然停留在放什麼在CalculationMap雖然。
謝謝。你知道我應該把什麼放在CalculationMap中以符合這個嗎? – stuartd 2010-11-10 16:38:02
現在是什麼? – 2010-11-10 16:58:27
還沒有.. :( – stuartd 2010-11-11 12:03:56