C# 将LinqToSql与OData WebApi一起使用?

C# 将LinqToSql与OData WebApi一起使用?,c#,asp.net-web-api,linq-to-sql,odata,C#,Asp.net Web Api,Linq To Sql,Odata,我们有一个使用LinqToSql作为ORM的项目,我们希望使用OData版本4公开我们的实体(据我所知,我们不能使用WCF数据服务,而应该使用webapi) 到目前为止,我在网上找不到任何示例或文档说明如何使用LinqToSql以及odatawebapi 问题是ODataConventionModelBuilder与EntityFramework一起工作(实际上,它的默认约定集与DataComponentModel注释一起工作,这些注释在LinqToSql实体中未使用) 我正在寻找一个使用Sys

我们有一个使用
LinqToSql
作为
ORM
的项目,我们希望使用
OData
版本4公开我们的实体(据我所知,我们不能使用
WCF数据服务
,而应该使用
webapi

到目前为止,我在网上找不到任何示例或文档说明如何使用
LinqToSql
以及
odatawebapi

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

我正在寻找一个使用
System.Data.Linq.Mapping
制作模型的
ODataModelBuilder

另一个解决方案是为使用
LinqToSql
映射注释的
ODataConventionModelBuilder
找到一组正确的约定


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

对于Linq to SQL,没有现成的模型生成器。有几种不同的方法可以解决你的问题

  • 派生自
    ODataModelBuilder
    自定义生成器类,该类可识别
    System.Data.Linq.Mapping
    中定义的注释

  • 使用stock
    ODataModelBuilder
    的方法

  • 构建一组表示要通过服务公开的确切类型和属性的数据传输类,然后编写一个实用程序,用于将数据传输对象转换为数据存储对象,反之亦然。在数据传输层中,类可以遵守
    ODataConventionModelBuilder
    认可的约定(例如,对于名为
    Foo
    的类,关键属性被命名为
    Id
    FooId
    )。转换实用程序可以在类似的库的帮助下轻松编写。看,还有


你所说的“stock ODataModelBuilder”是什么意思?我只是指现有的
ODataModelBuilder
类,它要求你明确地构建模型。例如,
builder.EntityType().HasKey(f=>f.FooID)
,等等。您必须手动指定所有这些信息,而不是依赖一组可以发现数据模型中的类型、属性和关系的约定。