我正在寻找使用EF数据库优先方法和MVC 4.5/Web API构建Web应用程序的最简单,最佳实践的方法。我的应用程序将使用角度框架使ajax调用按需检索json数据。使用Web API的实体框架5
目前,我得到了过度和结构不良的数据,以回应我的API调用,并想知道如何去清理它。
该应用程序将提供就业跟踪,所以我有这样的表:
Person
Id
Name
Email
Department : FK -> Department
Department
Id
Name
Jobs
Id
RequestedBy : FK -> Person
AssignedTo : FK -> Person
JobHistory
Id
JobId : FK -> Jobs
所以,最好当我打电话
$http.get(/api/People)
我会得到:
[{Name: 'alice', Email: '[email protected]', Department: 'ABC'},
{Name: 'bob', Email: '[email protected]', Department: 'CDE'}]
我猜想这意味着通常主要实体将被急切加载,但n所有其他具有对Person的依赖关系的表。但是有时我会想用这些后面的引用来获得一个人可能正在或正在请求的所有工作。
如果可能的话,我宁愿不必诉诸于修改T4模板的东西。虽然这很聪明,但它不是很灵活。另外,我不喜欢被赋予电源工具的想法,并告诉我必须在使用之前研究原理图并重新连接内部。我不是一个专业的开发人员,真的很想专注于工作,而不是工具; Linq2Sql对此非常好。当然,如果修改内脏是正确的答案,我会接受。
这似乎是Web API的这种直接使用,我确信我错过了一些明显的东西。
感谢
编辑
附加信息是最有可能导致我的问题的一部分。在某些时候,得到上述工作,我增加了以下内容的Global.asax.cs:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.All;
随着预先加载,在乔布斯的两个领域是指人导致循环引用。上面的代码允许Json.Net序列化它,但用不需要的数据填充json。我相信解决方案是以某种方式切换到延迟加载,但是这可以在数据库第一种方法中完成吗?
我想你已经通过了所有的教程等?看到这里:http://www.asp.net/web-api/overview/creating-web-apis/using-web-api-with-entity-framework/using-web-api-with-entity-framework,-第1部分 –
是的,教程很好。这并不是不行。问题是我回来的json看起来像:'{$ id:“1”,$ values:[{$ id:“2”,Departments:{$ id:“3”,Jobs:{$ id:“ 4“,$ values:[]},人物:{$ id:”5“,$ values:[{$ ref:”2“},{$ id:”6“,Departments:{$ ref:”3“ },工作:{$ id:“7”,$ values:[{$ id:“8”,...' – bob