0
我有兩個實體類(具有通用接口,以方便自動映射),其中,一個有一個通用的參考其它:映射ReferencesAny的反向嗎?
public interface IModelClass
{
Guid Id { get; set; }
}
class Order : IModelClass
{
public virtual Guid Id { get; set; }
public virtual ISet<Attachment> Attachments { get; set; }
}
class Attachment : IModelClass
{
public virtual Guid Id { get; set; }
public virtual IModelClass AttachedTo { get; set; }
}
我可以ReferencesAny
限定的一般參考:
mapping.ReferencesAny(x => x.AttachedTo)
.EntityTypeColumn("entity_type")
.EntityIdentifierColumn("entity_id")
.IdentityType<Guid>()
.MetaType<string>()
.AddMetaValue<Order>("ORDER")
.Cascade.None();
這個工作正常,只要我只直接使用附件工作,不要嘗試從Order
方面做事。我想雖然是映射關係相反 - 即什麼通常通過以下方式處理:
mapping.HasMany(x => x.Attachments)
,這樣我就可以了,比如,添加附件訂單的集合,讓他們堅持,而無需手動通過並設置/保存每個附件(並且我必須開始傳遞會話以獲取在同一事務中提交的附件)。這不起作用 - 它正常工作並在附件表上創建一個order_id
列。
有沒有辦法設置這個映射,以便它「有效」?
但是,如果您只是將訂單的附件添加到訂單的附件集,這不會不正確地保存嗎?它將保存沒有entity_type條目,這在使用GUID時會起作用,但會在其他方法中出現。否則,您將被減少爲手動分配反向連接,從而失敗了這一點。 – misnomer 2013-03-13 12:40:28
反過來說明對方用referenceAny負責保存,然後把它放在正確的entity_type中。您必須將訂單分配給'AttachedTo',否則您的訂單有附件,但附件不知道訂單,您有一個損壞的模型。只需添加'void AddAttachment(附件a){Attachments.Add(a); a.AtchedTo = this; }到訂單類 – Firo 2013-03-13 13:06:23