我是MVC和EF的新手,我很快就得到了EF查询,特别是使用EF key =“”。添加一些测试代码后,此处返回的错误是“当前上下文中不存在名称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());
}
}
答案 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,因为它已经是一个可查询的。