【问题标题】:Merging 2 models into 1 model in MVC在 MVC 中将 2 个模型合并为 1 个模型
【发布时间】:2011-10-11 10:50:19
【问题描述】:

我不知道我的问题的确切期限,也许这就是我在这里找不到此类相关问题的原因。

说,我有这些模型。

public abstract class Member
{
   public string ID { get; set; }
   public string Username { get; set; }
   public int  MemberType { get; set; } //1 if person; 2 if business
   //public string MemberName { get; set; } 
}

public class Person : Member
{
   public string LastName { get; set; }
   public string FirstName{ get; set; }
}

public class Business : Member
{
   public string BusinessName { get; set; }
   public string TaxNo { get; set; }
}

现在,我使用 fluent API 访问这些模型没有问题。

现在,我想要实现的是在我的 Member 类上添加一个属性 MemberName,如果 MemberType 为 1,它将派生自 Person 类的 LastName 和 FirstName 属性,如果 MemberTYPE = 2,则从 Business 类的 BusinessName 派生。

有没有简单的方法来实现这种事情?

谢谢

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 ef-code-first


    【解决方案1】:

    这可以通过一点abstract 魔法来完成。

    Member 上有这个:

    public abstract string MemberName { get; } 
    

    然后在Person 上覆盖为:

    public override string MemberName
    {
       get{ return FirstName + " " + LastName; }
    }
    

    Business 上,您会这样覆盖:

    public override string MemberName
    {
       get{ return BusinessName; }
    }
    

    现在,任何继承Member 的类的任何实例在调用MemberName 属性时都将返回正确的表示。这都是基本的继承/OOP/多态,随便你怎么称呼。

    【讨论】:

    • +1 - 这使会员保持关闭以进行更改并保持专业化的逻辑。它也比我的建议更干净。
    猜你喜欢
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多