在MVC建模中,如何将属性绑定到另一个模型?

时间:2013-05-06 16:00:08

标签: c# asp.net-mvc linq

所以我有2个模型,其中Model2链接到Model1:

public class Model1 {
    public int model1ID { get; set; }
    public int model2ID { get; set; }
}
public class Model2 {
    public int model2ID { get; set; }
    public int someData { get; set; }
}

我想这样做:

public class Model1 {
    public int model1ID { get; set; }
    public Model2 model2 { get; set; }
}

所以我可以这样做:

        var linqTest = (
            from curTest in database.Model1s
            select curTest 
        ).Sum(curTest => curTest .model2.someData);

编辑:

我的问题是如何告诉c#如何使用“model2ID”加载“model2”属性?我得到的具体错误是:

{"Invalid column name 'model1_ID'.\r\n Invalid column name 'model1_ID'."}

请注意,我没有名称为model1_ID的任何属性。

1 个答案:

答案 0 :(得分:1)

听起来你想使用关联属性:
实体框架关联属性:http://msdn.microsoft.com/en-us/data/jj713564.aspx
Linq to SQL关联属性:http://msdn.microsoft.com/en-us/library/bb629295.aspx

具有关联属性的数据模型类似于:

public class Model1 
{
    public int model1ID { get; set; }
    public int model2ID { get; set; }
    public virtual Model2 model2 { get; set; }
}

public class Model2
{
    public int model2ID { get; set; }
}

如果您不想使用关联属性,可以在查询中使用连接:

var linqTest = (
            from mod1 in database.Model1s
            join mod2 in database.Model2s
                on mod1.model2ID equals mod2.model2ID
            select new { Mod1 = mod1, Mod2 = mod2 } 
        ).Sum(row => row.Mod2.someData);

检查链接@nercan发布,以获取有关Linq查询中的联接的更多信息