【问题标题】:Populate ViewModel with multiple objects使用多个对象填充 ViewModel
【发布时间】:2012-10-30 08:57:19
【问题描述】:

考虑到这个 ViewModel

public class DocumentReferenceViewModel
{
    public int IdDocumentReference { get; set; }
    public string DocumentTitle { get; set; }
    public string PageNbr { get; set; }
    public string Comment { get; set; }
}
  • DocumentTitle 是 Document 对象的属性
  • IdDocumentReferencePageNumber 是 DocumentReference 对象

DocumentDocumentReference 与属性 IdDocument

相关联
  • 我有一个可以返回 Document 对象的存储库
  • 我有一个可以返回 DocumentReference 对象的存储库

public class DocumentReference
{
    public int IdDocumentReference;
    public string PageNbr { get; set; }
    public string Comment { get; set; }
}


public class Document
{
    public int IdDocument;
    public string DocumentTitle { get; set; }
}

如何从这 2 个对象(表)中绑定 ViewModel 而无需循环 DocumentReference 并且每个都查询数据库以检索 de DocumentTitle ?

ps:我没有使用 EF,我有调用手写存储过程的存储库

【问题讨论】:

    标签: c# asp.net sql asp.net-mvc repository


    【解决方案1】:

    您可以在 ViewModel 中使用构造函数:

    public class DocumentReferenceViewModel
    {
        public int IdDocumentReference { get; set; }
        public string DocumentTitle { get; set; }
        public string PageNbr { get; set; }
        public string Comment { get; set; }
    
        public DocumentReferenceViewModel(){}
    
        public DocumentReferenceViewModel(Document doc, DocumentReference docRef){
    
          this.DocumentTitle = doc.DocumentTitle;
          this.IdDocumentReference = docRef.IdDocumentReference;
          this.PageNbr = docRef.PageNbr ;
        }
    }
    

    您还可以使用 Comment 属性添加构造函数。

    public DocumentReferenceViewModel(Document doc, DocumentReference docRef, string comment){
    
          this.DocumentTitle = doc.DocumentTitle;
          this.IdDocumentReference = docRef.IdDocumentReference;
          this.PageNbr = docRef.PageNbr ;
          this.Comment = comment;
        }
    

    您从存储库 DocumentDocumentReference 获得并使用新构造函数之一创建一个实例。

    【讨论】:

    • 谢谢,所以我将不得不遍历参考,并为每个参考查询数据库中的文档标题。但我想避免这种情况。我认为我可能可以创建一个存储过程来获取每个 DocumentReference 的所有信息,但我没有一种优雅的方式来实现它
    • @Massanu 你可以再问一个问题,这完全是另一个话题
    • 如果您重新阅读我的问题,您会发现我已经明确指出我使用了存储过程和存储库,并且我正在寻找一种无需循环和查询每个 DocumentReference 的解决方案。
    猜你喜欢
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    相关资源
    最近更新 更多