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



所以我有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'.rn Invalid column name 'model1_ID'."}

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

听起来你想使用关联属性:
实体框架关联属性: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查询中join的更多信息

最新更新