0

使用 ASP.NET WebAPI 和 EF 5.0。我创建了一个数据提供程序,它将查询数据库,然后将一个对象或对象集合返回给我的客户端,这恰好是一个 html5/angularjs 应用程序。

问题在于更新。例如,如果我有一个课程,它可以有很多学生。所以我有一张Course桌子和一张Student桌子,里面有一个学生 ID 的 fk。如果我需要编辑学生,EF 对象包含有关学生的所有信息,包括 CourseId 和 Course 对象本身。

由于此循环引用,WebAPI 在尝试序列化此数据时会呕吐,因此延迟加载已关闭 - 所以当我获得学生 poco 时,Course 为空。

然后当我在客户端更新那个学生然后放回我的 WebAPI 时,我无法更新数据库,因为A referential integrity constraint violation occurred.

我可以制作 DTO,但在我走这条路之前,我应该看看其他模式来克服这个问题吗?有关简化此操作的其他工具或软件包的建议?

4

1 回答 1

1

WebApi 难以序列化 EF 对象图,但您应该能够更新实体,即使导航属性为 null,只要您的对象获得有效的 Id

通过将其状态设置为已修改,确保将其正确附加到上下文:

public void Update(DbContext context, User user)
{
    context.Entry(user).State = EntityState.Modified;
    context.SaveChanges();
}
于 2013-07-12T19:28:10.277 回答