我是Web API Odata的新手,在構建多個鍵上具有連接的控制器時,似乎並未生成正確的Sql語句。使用Web API OData的多鍵加入
我必須指出,在控制檯應用程序中單獨使用Entity Framework會產生預期的Sql。
這裏是我的控制器
public class Vw_SearchEntityController : ODataController
{
private CatalogDb db;
public Vw_SearchEntityController()
{
this.db = new CatalogDb();
}
[Queryable]
public IQueryable<Vw_SearchEntity> Get()
{
var result = db.Vw_SearchEntity.Join(db.Vw_EntityType,
o => new { TypeName = o.ClassType, Key = o.EntityId },
i => new { TypeName = i.EntityTypeName, Key = i.EnumName },
(s, i) => s);
return result.AsQueryable();
}
}
它生成的SQL是
SELECT ...
FROM (SELECT
...) AS [Extent1]
INNER JOIN (SELECT ... FROM [Tenant].[Vw_EntityType] AS [Vw_EntityType]) AS [Extent2]
ON 1=0
正如你看到的是不是正在生成ON子句。如果我修改linq語句加入單個鍵,它工作正常。這是OData提供程序的錯誤嗎?
使用的各種版本的軟件包是
- 的EntityFramework 6.1.0-β1
- 微軟的ASP.NET Web API的OData 2.1版本5.1.1
- .NET 4.5 VS2012
您有手動加入的原因嗎?您可以利用哪些實體之間沒有定義關係? – Dismissile
這是一個簡化版本的問題,但沒有這些實體之間沒有正式關係 –