Как я могу преобразовать этот кратный, где причина SQL в eSQL? - PullRequest
0 голосов
/ 11 марта 2011

T-SQL

USE [AdventureWorks];
SELECT p.* FROM Production.ProductCategory cat ,[Production].[ProductSubcategory] sub, [Production].[Product] p
WHERE cat.ProductCategoryID=1 AND sub.ProductCategoryID = cat.ProductCategoryID and p.ProductSubcategoryID = sub.ProductSubcategoryID

И я хочу преобразовать в eSQL для EntityDatasource

<asp:EntityDataSource ID="ProductDataSource" runat="server"  ConnectionString="name=AdventureWorksEntities" 
    DefaultContainerName="AdventureWorksEntities"  EntitySetName="Product" 
    Where="EXISTS(SELECT VALUE cat FROM ProductCategory AS cat WHERE cat.ProductCategoryID=1) 
             AND EXISTS(SELECT VALUE sub FROM ProductSubcategory AS sub WHERE sub.ProductCategoryID = cat.ProductCategoryID) 
             AND it.ProductSubcategoryID = sub.ProductSubcategoryID) " 
    >
</asp:EntityDataSource>

Но это ошибка.

Обновление: Спасибо, подсказки devart, я изменяю запрос на

SELECT VALUE p FROM AdventureWorksEntities.ProductCategory AS cat, AdventureWorksEntities.ProductSubcategory AS sub, AdventureWorksEntities.Product AS p WHERE cat.ProductCategoryID=1 AND sub.ProductCategoryID = cat.ProductCategoryID and p.ProductSubcategoryID = sub.ProductSubcategoryID

Теперь он работает.

1 Ответ

1 голос
/ 11 марта 2011

Вы можете использовать следующий код для обработчика события Selecting EntityDataSource, например:

string query = @"SELECT VALUE p FROM EntityContainer.ProductCategory as cat, EntityContainer.ProductSubcategory as sub, EntityContainer.Product as p WHERE cat.ProductCategoryID=1 AND sub.ProductCategoryID = cat.ProductCategoryID and p.ProductSubcategoryID = sub.ProductSubcategoryID";
EntityDataSource source = null; 
source = Page.FindControl("ProductDataSource") as EntityDataSource;
if(source != null) {
  source.EntitySetName = null;
  source.CommandText = query;
}  

Этот код предоставляет строго типизированный результат и использует предложение Where.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...