Я пользуюсь Linq и испытываю затруднения, делая что-то, что я считаю тривиальным.Я хочу вернуть данные из одного слоя, чтобы их можно было использовать независимо от linq на другом уровне.
Предположим, у меня есть уровень доступа к данным.Он знает о структуре сущностей и о том, как с ней взаимодействовать.Но это не волнует, кто получает к нему доступ.У меня есть одно интересное требование: запросы в структуре сущностей возвращают проецируемые данные, которые не являются частью самой модели сущностей. Пожалуйста, не просите меня изменить эту часть требования и сделать POCO для каждого типа возврата, поскольку это не лучший дизайн, учитывая проблему, которую я пытаюсь решить. Ниже приведен пример.
public class ChartData
{
public function <<returnType??>> GetData()
{
MyEntities context = new MyEntities();
var results = from context.vManyColumnsOfData as v
where v.CompanyName = "acme"
select new {Year = v.SalesYear, Income = v.Income};
return ??;
}
}
Затем я хотел бы, чтобы уровень пользовательского интерфейса ASP.Net мог вызывать уровень доступа к данным для получения данных, чтобы связать их с элементом управления.Уровень пользовательского интерфейса не должен знать, откуда поступили данные.Нужно только знать, что у него есть данные, которые ему нужно связать.Ниже приведен пример.
protected void chart_Load(object sender, EventArgs e)
{
// set some chart properties
chart.Skin = "Default";
...
// Set the data source
ChartData dataMgr = new ChartData();
<<returnType?>> data = dataMgr.GetData();
chart.DataSource = data;
chart.DataBind();
}
Каков наилучший способ отправить спроецированные данные linq обратно на другой слой?