【问题标题】:ASP.NET SPA with a legacy domain objects带有旧域对象的 ASP.NET SPA
【发布时间】:2012-03-23 21:17:53
【问题描述】:

查看 MVC 4 中的单页应用程序测试版,我看不出如何使用我的遗留域对象作为模型。似乎需要模型使用实体框架来使用 DbDataController 来获取数据等。

我不了解实体框架,所以我可能遗漏了一些东西。

如何在 MVC 4 的 SPA 中使用我的旧域(带有它自己的 DAL)?

【问题讨论】:

    标签: asp.net asp.net-mvc entity-framework-4.1 singlepage asp.net-spa


    【解决方案1】:

    这是由 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 序列化程序存在问题,所以不会返回只读属性。应该是固定的。

    当然,整个对象都会被序列化,如果您的域对象与子对象很复杂,这可能会带来很大的问题。特别是如果其中一些对象本身有序列化问题。

    与复杂的序列化相关,当前的 JSON 序列化器无法处理引用的域对象中的循环引用。

    在使用我自己的继承自 System.Web.Http.Data.DataController(示例使用 DBDataController)的控制器时,我也遇到了更新/删除/插入被回发的问题。

    【讨论】:

    • 嗨,我也在玩 SPA。您能否具体说明您在使用 DataController 时发现了哪些问题?目前我没有遇到任何问题..
    猜你喜欢
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 2010-10-21
    相关资源
    最近更新 更多