В настоящее время я использую EF 6, чтобы сделать следующее. Выполните хранимую процедуру, затем введите данные, которые мне нужно использовать. Данные обычно представляют собой 30-40 строк за один запуск приложения.
Затем я перебираю переменную, объект, таблицу (как бы вы это ни называли), выполняя аналогичные (иногда разные) задачи для каждой строки. Это прекрасно работает. Я могу создать объект Entity, раскрыть его различные сложные функции, а затем создать переменную для повторения.
Нравиться:
foreach (var result in StoredProcedureResult)
{
string strFirstname = result.FirstName
string strLastName = result.LastName
//more logic goes here using those variables and interacting with another app
}
Недавно я подумал, что было бы круто, если бы у меня был класс исключительно для доступа к данным. Таким образом, я мог бы просто сослаться на этот класс, добавить соответствующую строку подключения в свой app.config, а затем я мог бы разделить два набора логики. Поэтому, пытаясь сделать вышеописанное в этой структуре, я дохожу до точки, в которой вы не можете вернуть var или когда я пытаюсь сопоставить тип возвращаемого объекта. Тип возвращаемого значения выполнения хранимой процедуры - объект (который я не могу повторять).
Итак, мой вопрос: как добраться до приведенного выше примера, за исключением того, что результат var возвращается из этого класса доступа к данным?
Если я что-то упускаю или это невозможно, потому что я делаю это неправильно, дайте мне знать. Оно возникло прямо у меня в голове.
EntityName db = new EntityName(); var StoredProcedureResult = db.Sp_That_Returns_SomeRows_And_Columns(); db.Dispose();
- person MZawg   schedule 07.12.2018EntityName
является именем класса вашего DbContext, то более обычным способом будет использованиеusing
вместоDispose
см. документ. во-вторых: импорт функции должен позволить вам указать, что процедура возвращает сложный тип, таким образом, вы получите этот тип, возвращенный вместо объекта - person Marty   schedule 07.12.2018System.Data.Entity.Core.Objects.ObjectResult
- person MZawg   schedule 10.12.2018ObjectResult
- это тип возвращаемого значения, который вы можете перебирать. Еще одна небольшая проблема. Так вот в моем посте с примером возврата имени или фамилии видно, что создаются get и set для конкретных столбцов, а в DataAccessLayer я вижу эти методы. Проблема в том, что в проекте, ссылающемся на DAL,string strFirstname = result.FirstName
нет intellisense, показывающего список столбцов при вводеresult.
, поэтому я думаю, что здесь что-то упускаю. - person MZawg   schedule 10.12.2018ObjectResult<NameOfYourFunction_Result)
это правильный тип возврата, и это работает. Моя проблема в том, что я использовал идею, которую мне дал ответ другого человека на Stack. Приложение -- Уровень доступа к данным -- Общий уровень, каждый из которых является отдельным проектом, и у меня сложилось впечатление, что я могу содержать все свои материалы для доступа к данным в одном месте, а затем поделиться ими с общим уровнем, а затем сделать ссылку из основного приложения в общий проект, и это откроет доступ к методам общего проекта, вызывающим уровень доступа к данным. - person MZawg   schedule 10.12.2018