2011-09-05 82 views
1

我需要建模此場景的幫助。幫助在asp.net中定義域模型

A病人可以有很多醫療人員

醫生可以有很多病人。

患者也是用戶。 (會員用戶)

Medic也是用戶。 (會員用戶)

他們是完全不同的,因爲(例如)患者將有許多體格檢查,而軍醫不會。

這應該是類嗎?將這樣的班級綁定到特定的MembershipUser的標準方法是什麼?

我很難理解這一點。

回答

0

你可以擁有的東西像這樣在域層:

public class Credentials { 
    private String _userName; 
    private String _email; 
    private String _passwordQuestion; 
} 

public abstract class User { 
    private Credentials _credentials; 
} 

public class Patient : User { 
    private List<Medic> _medics; 
    private List<PhysicalExam> _exams; 
} 

public class Medic : User { 
    private List<Patient> _patients; 
} 

請注意,域代碼不直接引用ASP.NET成員資格。您的基礎結構可以負責將域用戶對象映射到ASP.NET MembershipUser:

public class AspNetMembershipProvider { 
    public MembershipUser BasedOn(User user) { 
     return new MembershipUser(user.UserName, user.Email, ...) 
    }  
} 
0

從您的解釋中,我只需要一個抽象基類,也許稱爲用戶,它定義了患者和Medic分享的重複屬性和方法。

然後,我會有一個公共屬性公開的屬性,該基類是MembershipUser對象。

然後讓Patient和Medic類從基類User類繼承並實現它們各自的獨特功能。

底座用戶類也可以實現一個公共屬性,即有限制噸至用戶對象

事情是這樣的where子句T的名單:

public abstract class User<T> where T : User<T> 
{ 
    public MembershipUser Membership { get; set; } 
    public List<T> Users { get; set; } 

} 

public class Patient : User<Medic> 
{ 

} 

public class Medic : User<Patient> 
{ 

} 
+0

這似乎是合理的。但是當涉及到實際存儲在數據庫中。患者如何與MembershipUser相關?病人有一個用戶名屬性?..林不知道如何獲取成員資格屬性填充 – ignaciofuentes

+0

是最簡單的方法將只存儲用戶名作爲用戶對象的屬性。那麼如果你需要實例化一個MembershipUser對象,你可以通過username屬性來實現。或者從構造函數接受一個用戶名字符串,並在那裏實例化你的MembershipUser對象。 –