实体框架 – .Net Web API – 实体框架 – 在序列化期间忽略关系

我正在创建一个ASP.Net Web API来公开现有数据库以用于手持设备.我在Web API,EF和其他我想在这个项目上使用的其他东西也相对较新:)

我希望结果数据传输尽可能轻量级,但是当api返回一个对象时,序列化的JSON有自己的’EntityKey’字段以及与该对象有关系的其他表中的行.

我现在正在尝试使用ADO.NET DbContext模板生成器来生成模型代码.这摆脱了EntityKey字段,但我仍然在JSON中显示关系.

我想要的只是要序列化的对象中的字段,并且能够将JSON反序列化为这些对象以进行插入和更新.有没有内置的方法来做到这一点?

什么是我最好的选择?

最佳答案
在您的返回值中“选择”一个新类型

return ienumfromedmx.Select(o=> new { id = id, value = value, name = name});

这些是您想要返回的值

如果您发布一些示例代码,可能更容易为您提供更相关的代码示例

用你的书

public Book GetBook(int id) { return books.SingleOrDefault(b => b.Id == id);}

改成

public dynamic GetBook(int id){
return books.SingleOrDefault(b=>b.id == id).Select(new { id = id, Title  = Title, price = Price});
}

要么

public object GetBook(int id){
return books.SingleOrDefault(b=>b.id == id).Select(new { id = id, Title  = Title, price = Price});
}

或者(为了参考起见 – 我使用动态或对象来代替api而不是JsonResult)

public JsonResult GetBook(int id){
return Json(books.SingleOrDefault(b=>b.id == id).Select(new { id = id, Title  = Title, price = Price}));
}

请注意,如果你正在使用

public JsonResult GetBook(int id){
return Json(books.SingleOrDefault(b=>b.id == id).Select(new { id = id, Title  = Title, price = Price}));
}

如果您使用的是httpget而不是发布,那么您需要使用

public JsonResult GetBook(int id){
return Json(books.SingleOrDefault(b=>b.id == id).Select(new { id = id, Title  = Title, price = Price},JsonRequestBehavior.AllowGet);
}

转载注明原文:实体框架 – .Net Web API – 实体框架 – 在序列化期间忽略关系 - 代码日志