帮助在asp.net中定义域模型

时间:2011-09-05 20:22:57

标签: asp.net asp.net-membership domain-driven-design

我需要帮助建模这种情况。

患者可以有很多医务人员

Medic可以有很多患者。

患者也是用户。 (的MembershipUser)

Medic也是用户。 (的MembershipUser)

它们是完全不同的,因为(例如)患者将有许多物理检查,而医生则不会。

这应该是课吗?将类这样的类绑定到特定的MembershipUser的标准方法是什么?

我无法理解这一点。

2 个答案:

答案 0 :(得分:0)

根据你的解释,我只需要一个抽象的基类,可能叫做User,它定义了Patient和Medic共享的重复属性和方法。

然后我会在该基类中公开一个公共属性,它是MembershipUser对象。

然后,让Patient和Medic类从基类User类继承并实现各自的独特功能。

基本用户类还可以实现一个公共属性,该属性是一个T的List,它有一个where子句,用于将T限制为User对象

这样的事情:

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>
{

}

答案 1 :(得分: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成员资格。您的基础结构可以负责将域User对象映射到ASP.NET MembershipUser:

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