ADO.NET 3.0. Impedance Mismatch и все остально
var q =
from c in db.Customers
join o in db.Orders on c.CustomerID equals o.CustomerID
where c.City == "London"
select o;
См The LINQ Project
update. Хм, оказывается, все это и будет работать вместе с Linq (там снизу Михалик об этом говорит)
1.
SELECT o.OrderDate, o.OrderID, SUM(d.Quantity) as Total
FROM Orders AS o
LEFT JOIN [Order Details] AS d ON o.OrderID = d.OrderID
WHERE o.OrderDate >= @date
GROUP BY o.OrderID
HAVING Total >= 1000"
в SELECT нельзя писать o.OrderDate поскольку он не упоминается в GROUP BY. Зачем LEFT JOIN если все равно стоит условие HAVING Total >= 1000", можно было написать INNER JOIN.
2.
var orders = from o in nw.Orders
where o.OrderDate > date
select new { o.orderID,
o.OrderDate, Total = o.OrderLines.Sum(l => l.Quantity);
Скобка "select new {" нигде не закрывается. Где условие, из которого потом получается Total >= 1000? (в следующем запросе оно почему-то присутствует)
3.
SELECT o.OrderDate, o.OrderId, o.Total
FROM (SELECT o.OrderId,
SUM(o.OrderDetails..Quantity) AS Total,
FROM Orders AS o
WHERE o.OrderDate >= @date) AS o
WHERE o.Total >= 1000
Откуда-то взялось OrderDetails во фроме оно отсутствует... И вообще какой-то бред написан.
Если разработчики новой технологии не могут без ошибок элементарный запрос написать, что же они такое налобают...
я к тому что не надо придумывать новый язык
update. Хм, оказывается, все это и будет работать вместе с Linq (там снизу Михалик об этом говорит)это я все понял
скорее всего причина, по которой не хотят встраивать SQL в C# — поддержка разных СУБД, т.е. не хотят жестко завязываться на MSSQLServer.
Вообще, судя по всему .NET не собирается становится серьезной платформой для разработки бизнес-приложений, т.е. не собирается конкурировать с системами разработки ERP-систем Axapta, R3, OEBS, 1C. Видимо она пока так и остается ориентированной на мелкие задачи интеграции и web. Это видно по ADO, а так же по WCF(Indigo которое строится на Weв services-ах, а Remouting вообще задвигают. Но ведь для разработки Remouting удобнее, его минус только в отсутствии кросплатформенности.
Ты кстати WCF уже начал ботать?
![](/images/graemlins/grin.gif)
я вот тоже пока еще нет, все собираюсь
плохо что под оракл нет аналога
![](/images/graemlins/frown.gif)
Есть слухи, что они хотят сделать поддержку и для DB2, и для Oracle
или как-то так там уже так можно делать.это же в стадии разработки, там еще десять раз все поменяется, я бы не стал это использовать
вроде слухи о том что они все это дело откроют, и для оракла будет писать тот кому это надо
![](/images/graemlins/smile.gif)
Думаю, будет простое решение: в сложных случаях запрос будет выполняться по классической схеме.
если встраивать SQL, то хинты останутся на своем месте
This paper focuses on programming against data and how by raising the level of abstraction from the logical (relational) level to the conceptual (entity) level we can eliminate the impedance mismatch for both applications and data services like reporting, analysis, and replication offered as part of the SQL Server product.
http://msdn.microsoft.com/data/default.aspx?pull=/library/en...
майкрософт решила строить систему не на основе логики (logical level а по понятиям (conceptual level)
![](/images/graemlins/grin.gif)
Оставить комментарий
6yrop
Microsoft делает еще одну попытку сделать доступ к реляционным данным из дотнета удобной (первая ObjectSpace к счастью провалилась). Вот несколько статей по этой темеhttp://blogs.gotdotnet.ru/personal/mihailik/PermaLink.aspx?g...
То что предлагаемое решение "в стиле IBM-Java-CORBA-EJB"
Вот в этой статье
http://msdn.microsoft.com/data/default.aspx?pull=/library/en...
о Impedance Mismatch. Неужели нельзя было просто встроить SQL в C#? Пример из статьи выглядел бы вот так