2011-12-20 108 views
0

映射以下類的最佳方法是什麼?

我有類的通信是「基」類,因爲它包含任何選項的共享數據。只能與ComSms或ComEmail進行通信。問題是我不確定如何繼續進行映射。 我想盡可能使用一個存儲庫來訪問對象。與一對一關係中的共享外鍵映射表?

類設置

public interface ICommunication 
    { 

    } 

public Communication: ICommunication{ 
    //PK and FK on this item 
    public virtual int CommunicationId{get;set;} 
    public virtual string Name {get;set;} 
    public virtual string Surname {get;set;} 
    public virtual DateTime Date{get;set;} 

    //I am expecting to switch on type between ComSms and ComEmail 
    public virtual Type {get;set;}  

}

public ComSms : Communication{ 
    public virtual string Number {get;set;} 
    public virtual string Text {get;set;} 
} 
public ComEmail : Communication{ 
    public virtual string Subject{get;set;} 
    public virtual string Body {get;set;} 
    public virtual string Address {get;set;} 
} 

數據庫

Simplified Database layout

想象的使用

ICommunication smsToSave = new ComSms() 
smsToSave.Name = "UserName"; 
smsToSave.Surname ="UserSurname"; 
smsToSave.Date = DateTime.Now; 
smsToSave.Type = 1; 
smsToSave.Number ="123456789"; 
smsToSave.Text = "Hello boys"; 
CommunicationRepository.Save(smsToSave) 

回答

0

確定 我已經分開倉庫,處理過的一部分,而不是

我不能正確綁定,所以選擇去解決該問題得到解決它。 如果您發現任何方式,請讓我知道

0

我沒有時間寫出任何映射,但您需要的是鑑別器。這可以讓你說你的表中有一個CommunicationType外鍵可以鏈接到SmsEmail表。鑑別器的好處在於NHibernate爲您處理所有事情。

是的,看到您的聚合根目錄是Communication,那麼您可以使用一個存儲庫訪問任何一種通信類型。

相關問題