建模一对多关系-模型与视图模型

时间:2018-12-02 21:28:10

标签: c# asp.net-mvc

我目前正在尝试对与Model-First MVC中的另一个对象具有一对多关系的对象类进行建模-一个“联系”对象,该对象除其他外还包括(引用?)一个对象或更多“兴趣”,是从完整的兴趣数据库列表中创建联系人时选择的。据我了解,人们使用ViewModel来容纳这种关系,但是我认为我误解了模型与ViewModel之间的关系。

目前,我有一个通讯录模型:

public class Contact
{
    public int Id { get; set; }

    public string Email { get; set; }

    public virtual List<Interest> Interests { get; set; }

    public List<int> InterestIds { get; set; }
}

兴趣模型:

public class Interest
{
    public int Id { get; set; }

    public string Name { get; set; }
}

联系人视图模型:

public class ContactViewModel
{
    public int Id { get; set; }

    public string Email { get; set; }

    public List<int> InterestIds { get; set; }

    public List<InterestViewModel> Interests { get; set; }
}

还有一个兴趣视图模型

public class ContactViewModel
{
    public int Id { get; set; }

    public string Email { get; set; }

    public List<int> InterestIds { get; set; }

    public List<InterestViewModel> Interests { get; set; }
}

但是我对去往何处的说法有所矛盾。

简而言之,我希望最终结果是我应该能够从“创建”视图中选择一个或多个兴趣(最好带有一系列复选框)以存储在新联系人中,然后从“索引”视图中进行选择筛选联系人列表,根据该列表他们有或没有兴趣。我已经为其中的大多数计划了逻辑,但是暂时应该如何设计我的模型与ViewModel,以最好地适应这种愿景?

1 个答案:

答案 0 :(得分:1)

您的Contact实体存在逻辑错误,应从InterestIds实体中删除Contact属性,并向您的ContactId实体添加名称为Interest的属性。它为联系人提供外键(从ContactInterest的一对多关系)。但是,如果ViewModel等于Model,则不需要任何ViewModel。