Я написал довольно много кода, который использует отношения таблиц Linq2Sql, предоставленные мне просто при наличии внешних ключей в моей базе данных. Но это оказывается немного трудоемким, чтобы высмеивать данные для моих модульных тестов. Я должен вручную установить любые отношения в моем тестовом жгуте.
Итак, мне интересно, если бы написание Linq-соединений вместо того, чтобы полагаться на отношения, дало бы мне более легко тестируемый и возможно более производительный код.
var query =
from orderItem in data.OrderItems
select new
{
orderItem.Order.Reference,
orderItem.SKU,
orderItem.Quantity,
};
Console.WriteLine("Relationship Method");
query.ToList().ForEach(x => Console.WriteLine(string.Format("Reference = {0}, {1} x {2}", x.Reference, x.Quantity, x.SKU)));
var query2 =
from orderItem in data.OrderItems
join order in data.Orders
on orderItem.OrderID equals order.OrderID
select new
{
order.Reference,
orderItem.SKU,
orderItem.Quantity,
};
Console.WriteLine();
Console.WriteLine("Join Method");
query2.ToList().ForEach(x => Console.WriteLine(string.Format("Reference = {0}, {1} x {2}", x.Reference, x.Quantity, x.SKU)));
Оба приведенных выше запроса дают один и тот же результат, но один лучше другого с точки зрения производительности и тестируемости?