我们有一个项目使用LinqToSql
作为其ORM
,我们希望使用OData
版本4公开我们的实体(因此据我所知,我们不能使用WCF Data Services
,我们应该使用Web Api
。
到目前为止,我在网上找不到任何示例或文档,说明如何使用LinqToSql
和OData WebApi
。
问题是ODataConventionModelBuilder
适用于EntityFramework
(实际上,默认的约定集适用于我们的DataComponentModel
实体中未使用的LinqToSql
注释
我正在寻找与ODataModelBuilder
配合使用的System.Data.Linq.Mapping
来制作模型。
另一个解决方案是找到适用于ODataConventionModelBuilder
映射annotatoins的LinqToSql
的正确约定。
我不知道这个模型构建器是否存在,或者我们应该自己实现它?
答案 0 :(得分:2)
Linq to SQL没有现成的模型构建器。有几种不同的方法可以解决您的问题。
从ODataModelBuilder
派生自定义构建器类,该类可识别System.Data.Linq.Mapping
中定义的注释。
Build the model manually使用股票ODataModelBuilder
的方法。
构建一组数据传输类,表示要通过服务公开的确切类型和属性,然后编写一个实用程序,用于将数据传输对象转换为数据存储对象,反之亦然。在数据传输层中,类可以遵循ODataConventionModelBuilder
识别的约定(例如,对于名为Id
的类,键属性名为FooId
或Foo
。借助像AutoMapper这样的库,可以轻松编写转换实用程序。请参阅ASP.NET WebApi OData support for DTOs,DTO and Projections in WebAPI和Web API Deep Dive - DTO Transformations and Automapper。