将 LinqToSql 与 OData WebApi 一起使用?

using LinqToSql with OData WebApi?

我们有一个使用 LinqToSql 作为其 ORM 的项目,我们希望使用 OData 版本 4 公开我们的实体(据我所知,我们可以不要使用 WCF Data Services,我们应该使用 Web Api

到目前为止,我在网上找不到任何示例或文档来说明如何将 LinqToSqlOData WebApi 一起使用。

问题是 ODataConventionModelBuilderEntityFramework 一起工作(实际上它的默认约定集与 DataComponentModel 注释一起工作,这些注释未在我们的 LinqToSql 实体中使用)

我正在寻找与 System.Data.Linq.Mapping 一起制作模型的 ODataModelBuilder

另一种解决方案是为 ODataConventionModelBuilder 找到与 LinqToSql 映射注释一起使用的正确约定集。

我不知道这个模型生成器是否存在,或者我们应该自己实现吗?

Linq to SQL 没有现成的模型构建器。有几种不同的方法可以解决您的问题。

  • 派生自 ODataModelBuilder 自定义生成器 class,它识别 System.Data.Linq.Mapping 中定义的注释。

  • Build the model manually使用股票的方法ODataModelBuilder

  • 构建一组数据传输 classes 来表示您希望通过服务公开的确切类型和属性,然后编写一个实用程序将数据传输对象转换为数据存储对象,反之亦然。在数据传输层中,classes 可以遵守 ODataConventionModelBuilder 认可的约定(例如,对于 class,关键属性被命名为 IdFooId名为 Foo)。借助 AutoMapper. See ASP.NET WebApi OData support for DTOs, DTO and Projections in WebAPI, and Web API Deep Dive - DTO Transformations and Automapper.

  • 这样的库,可以轻松编写转换实用程序