using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DomainModel = DevLeap.Linq.Architecture.NTier.DomainModel;

namespace DevLeap.Linq.Architecture.NTier.DataLayer.LinqToSql {
public class CustomerDal :
BaseDal<DomainModel.Customer, List< DomainModel.Customer>, String>

// ... Kd vynechn ...

public override DomainModel.Customer Read(string key) {
// Pevod prvnho zkaznka LINQ to SQL na 
// zkaznka v domnovm modelu pomoc 
// vrazu LINQ
var result =
(from c in this.Northwind.Customers
where c.CustomerID == key
select new DomainModel.Customer {
CustomerID = c.CustomerID,
Address = c.Address,
City = c.City,
CompanyName = c.CompanyName,
ContactName = c.ContactName,
ContactTitle = c.ContactTitle,
Country = c.Country,
Fax = c.Fax,
Phone = c.Phone,
PostalCode = c.PostalCode,
Region = c.Region,
// Pevd seznam objednvek zkaznka
// LINQ to SQL na seznam objednvek definovanch 
// v domnovm modelu 
// pomoc poddotazu LINQ.
Orders = new List<DomainModel.Order>(
from o in c.Orders
select new DomainModel.Order {
OrderID = o.OrderID,
CustomerID = o.CustomerID,
EmployeeID = o.EmployeeID,
Freight = o.Freight,
OrderDate = o.OrderDate,
RequiredDate = o.RequiredDate,
ShipAddress = o.ShipAddress,
ShipCity = o.ShipCity,
ShipCountry = o.ShipCountry,
ShipName = o.ShipName,
ShippedDate = o.ShippedDate,
ShipPostalCode = o.ShipPostalCode,
ShipRegion = o.ShipRegion,
ShipVia = o.ShipVia
})
}).First();

return (result);
}

// ... Kd vynechn ...

}
}
