Мне нужно руководство по проблеме, я использую Entity Framework 4.0, у меня есть DAL и BLL, и я привязываюсь к ObjectDataSource на странице.
Мне пришлось написать хранимую процедуру, используя PIVOT
и динамический SQL, чтобы вернуть данные из нескольких объектов так, как я хочу.Теперь я пытаюсь выяснить, как я могу заставить Entity Framework возвращать пользовательский объект, который я могу связать с моим ObjectDataSource
на странице, мне НУЖНО использовать пользовательский объект или динамический объект, поскольку хранимая процедура может возвращать любое числостолбцов, поэтому я не могу использовать строго типизированный класс или сущность, и мне нужно также иметь возможность связать это с ObjectDataSource
.
Может кто-нибудь указать хороший способ сделать это и как определитьмоя функция?С некоторыми примерами кода, пожалуйста.
Я прочитал, что должен попытаться использовать List<T>
для возврата объекта, так как EF не поддерживает возврат наборов данных / наборов данных, у меня пока есть следующее, но я знаю, что это не такправильно.
Я мало работал с дженериками, если бы вы могли указать, как это сделать, я уверен, что это будет полезно для многих людей.Пожалуйста, предоставьте примеры кода для функции и как связать ObjectDataSource
с возвращаемым объектом?
Ваша помощь очень важна !!
Спасибо за вашу помощь, Ричард, именно так сейчас выглядит моя функция, основанная на вашем предложении использовать DbDataRecord
*Функция 1021 * C # для
ObjectDataSource
в DAL
public List<DbDataRecord> GetData(int product_id)
{
List<DbDataRecord> availableProducts = new List<DbDataRecord>();
var groupData = context.ExecuteStoreQuery<DbDataRecord>("exec
spGetProducts @ProductID={0}", product_id);
availableProducts = groupData.ToList<DbDataRecord>();
return availableProducts;
}
ObjectDataSource
на странице ASPX
<asp:ObjectDataSource ID="ODSProductAvailability" runat="server"
TypeName="Project.BLL.ProductBL"
SelectMethod="GetData" >
<SelectParameters>
<asp:SessionParameter Name="product_id" SessionField="ProductID" />
</SelectParameters>
</asp:ObjectDataSource>
Прямо сейчас я получаю эту ошибку при доступе к странице:
Тип результата 'System.Data.Common.DbDataRecord' может быть не абстрактным и должен включать конструктор по умолчанию
Это потому, что ExecuteStoreQuery
ожидается, что будет определен класс или сущность?Как я могу просто создать объект на основе результатов хранимой процедуры и присвоить ему это?