【问题标题】:MVC and Entity Framework KeyMVC 和实体框架键
【发布时间】:2013-02-10 18:35:47
【问题描述】:

我是 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());
    }
}

【问题讨论】:

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


    【解决方案1】:

    那就是list.OrderBy(o =&gt; o.idAddress).ToList();

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

    【讨论】:

    • 谢谢.... var list1 = list.OrderBy(o => idAddress).ToList();和 var l1 = list1[0].AddressState.State;是为了测试。 var list 被输入到 JSON 代码中。 JSON 代码返回错误“... 0 count...”,因为没有找到记录。我是否使用 var list = db.Addresses.Include("AddressCountry").Include("AddressState").Include("AddressType").AsQueryable(); 正确查询 EF?它似乎没有返回任何供 JSON 使用的东西?
    • 尝试使用.ToList() 代替AsQueryable() 看看是否有不同。
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多