查看 MVC 4 中的单页应用程序测试版,我看不出如何使用我的遗留域对象作为模型。似乎需要模型使用实体框架来使用 DbDataController 来获取数据等。
我不了解实体框架,所以我可能遗漏了一些东西。
如何在 MVC 4 的 SPA 中使用我的旧域(带有它自己的 DAL)?
查看 MVC 4 中的单页应用程序测试版,我看不出如何使用我的遗留域对象作为模型。似乎需要模型使用实体框架来使用 DbDataController 来获取数据等。
我不了解实体框架,所以我可能遗漏了一些东西。
如何在 MVC 4 的 SPA 中使用我的旧域(带有它自己的 DAL)?
这是由 ASP.NET 论坛中的其他人回答的。
如果您想使用其中一些 RAD 工具,您将无法使用除 EF 之外的任何工具。但是,SPA 构建在 MVC 之上,因此您应该能够相当轻松地构建自己的版本。重要的组件将是在 ApiController 之上构建一个 DataController 和一个用于 DataController 提供的服务的 js 消费者。如果您要将模型格式化为与 EF 输出相同的格式(我认为它只是 OData),您也可以使用 upshot.js,并且只需要实现一个 DataController 来格式化您的域模型。
在使用它几天后,我将添加以下内容,理论上,如果您和未来版本的 SPA 处理/修复了以下内容,您可以使用它。
您可以创建一个继承自 System.Web.Http.Data.DataController(甚至可能是 ApiController)的控制器。然后它返回的对象必须只有一个用 System.ComponentModel.DataAnnotations.Key() 属性修饰的属性。我可以让视图正常工作,但一些更高级的功能,比如分组,我遇到了问题。
我猜是因为当前使用的 JSON 序列化程序存在问题,所以不会返回 Readonly 属性。应该是固定的。
当然,整个对象将被序列化,如果您的域对象与子对象很复杂,这可能会非常有问题。特别是如果其中一些对象本身存在序列化问题。
与复杂的序列化相关,当前的 JSON 序列化程序无法处理引用的域对象中的循环引用。
当使用我自己的继承自 System.Web.Http.Data.DataController 的控制器(示例使用 DBDataController)时,我也遇到了更新/删除/插入被回发的问题。