使用EF 4.1将嵌套对象属性映射到一个ViewModel

时间:2011-05-27 19:50:16

标签: entity-framework asp.net-mvc-3 linq-to-entities entity-framework-4.1

嘿那里,我是MVC3和EF 4.1的新手,我正在尝试创建一个结构,其中我的ViewModel包含一组嵌套对象的展平表示。我想知道EF 4.1是否处理这种情况。我做了一些阅读,甚至找不到用于搜索的术语。基本上我想要做的是基于不同域模型的部分创建一个ViewModel。所以像这样的东西是我的嵌套模型,底部是我想要的ViewModel:

class ModelA
    property one
    property two
    property three

class ModelB
    property eh
    property be
    property cee
    property ModelC modC

class ModelC
    property une
    property deux
    property trois
    property ModelD modD

class ModelD
    property x
    property y
    property z


class ShowStuffViewModel
    property one
    property two
    property be
    property trois
    property y
    property z

我一直认为我的概念是错误的,但最终我希望能够通过命名约定自动地将属性映射到我的ViewModel嵌套表中,无论该属性处于什么级别。我这样想,当我只需要从每个对象中获取一些数据点时,我不必携带大量的对象。我还想通过查询两个基本模型ModelA和ModelB来进行LINQ调用以填充ViewModel属性,然后将值直接分配给ViewModel。

请原谅我在这里开始我的OOP MVC等旅程时的新细节,非常感谢任何帮助或指导!

喝彩!

1 个答案:

答案 0 :(得分:1)

您正在寻找的术语称为投影。我不明白ModelA如何与其他模型相关,所以我将在示例中跳过它,但为了休息,您可以简单地创建此查询:

var query = from b in context.ModelBs
            // some join for ModelA here? 
            // Models must be related if you want to load them with single query
            select new ShowStuffViewModel
                {
                    be = b.be,
                    trois = b.ModelC.trois,
                    y = b.ModelC.ModelD.y, 
                    z = b.ModelC.ModelD.z 
                };