MVC和实体框架密钥

时间:2013-02-25 15:04:46

标签: asp.net-mvc linq entity-framework

我是MVC和EF的新手,我很快就得到了EF查询,特别是使用EF k​​ey =“”。添加一些测试代码后,此处返回的错误是“当前上下文中不存在名称idAddress”。 Address表上有一个名为idAddress - identty int

的主键

我已阅读了网站上的许多建议,但无法理解。

    private motion_care_360Entities db = new motion_care_360Entities();
    public ActionResult GetItems(GridParams g)
    {
        var list = db.Addresses.Include("AddressCountry").Include("AddressState").Include("AddressType").AsQueryable();
        var list1 = list.OrderBy(o => idAddress).ToList();
        var l1 = list1[0].AddressState.State;

        return Json(new GridModelBuilder<Address>(list, g)
            {
                Key = "idAddress", // needed when using Entity Framework, usually it's Id
                                   // If you're using EF, it's needed so that the data will be ordered by it before paging it
                Map = o => new
                {
                    AddressTypeType = o.AddressType.Type,
                    AddressStateState = o.AddressState.State,
                    AddressCountryCountry = o.AddressCountry.Country,
                    o.City,
                }
            }.Build());
    }
}

2 个答案:

答案 0 :(得分:0)

那需要是list.OrderBy(o => o.idAddress).ToList();

您需要指定它是由对象的idAddress(即lambda表达式中的o)本身。

答案 1 :(得分:0)

你真的很困惑很多事情。首先,您声称拥有的问题与MVC或EF无关。它与GridModelBuilder有关,因为它不是MVC的一部分,所以你必须使用一些第三方控件。

其次,我猜测(因为我不知道你正在使用什么第三方控件)使用GroupBy时使用Key,而不是在使用OrderBy时。 OrderBy没有密钥,但GroupBy没有密钥。但是很难知道,因为你似乎认为第三方工具是框架的一部分。

第三,您的OrderBy被分配给list1,您永远不会使用它。您使用列表,这是无序的。

第四,你不需要AsQueryable,因为它已经是一个可查询的。