我们有一个使用LinqToSql
作为其ORM
的项目,我们希望使用OData
版本4公开我们的实体(因此,据我所知,我们不能使用WCF Data Services
,而应该使用Web Api
)。
到目前为止,我在网上找不到任何示例或文档来展示如何将LinqToSql
与OData WebApi
一起使用。
问题是ODataConventionModelBuilder
与EntityFramework
一起工作(事实上,它的默认约定集与DataComponentModel
注释一起工作,而这些注释在我们的LinqToSql
实体中没有使用)
我正在寻找一个与System.Data.Linq.Mapping
配合使用的ODataModelBuilder
来制作模型。
另一种解决方案是为ODataConventionModelBuilder
找到一组正确的约定,该约定与LinqToSql
映射注释一起使用。
我不知道这个模型构建器是否存在,或者我们应该自己实现它?
Linq到SQL没有现成的模型生成器。有几种不同的方法可以解决你的问题。
-
从
ODataModelBuilder
派生一个自定义生成器类,用于识别System.Data.Linq.Mapping
中定义的注释。 -
使用库存
ODataModelBuilder
的方法手动构建模型。 -
构建一组数据传输类,这些类表示要通过服务公开的确切类型和属性,然后编写一个实用程序,用于将数据传输对象转换为数据存储对象,反之亦然。在数据传输层中,类可以遵守
ODataConventionModelBuilder
识别的约定(例如,对于名为Foo
的类,密钥属性被命名为Id
或FooId
)。转换实用程序可以在像AutoMapper这样的库的帮助下轻松编写。请参阅ASP.NET WebApi OData对WebApi中DTO、DTO和投影的支持,以及Web API Deep Dive-DTO转换和自动映射器。