3

我是 MVC 和 EF 的新手,并且有一段时间让 EF 查询工作,特别是使用 EF key=""。添加一些测试代码后,这里返回的错误是 'The name idAddress does not exist in the current context'。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());
    }
}
4

2 回答 2

0

你实际上对很多事情感到困惑。首先,您声称的问题与 MVC 或 EF 无关。它与 GridModelBuilder 是什么有关,并且由于它不是 MVC 的一部分,因此您必须为此使用一些第三方控件。

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

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

第四,您不需要 AsQueryable,因为它已经是 Queryable。

于 2013-03-09T03:34:14.777 回答
0

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

o您需要通过对象(即来自您的 lambda 表达式)本身的 idAddress 来指定它。

于 2013-02-25T16:11:44.730 回答