2015-06-24 3 views
4

Я использую EF 6 для подключения к существующей базе данных SQL. Я хочу создать модель для некоторых существующих объектов и хранимых процедур, отличных от CRUD. Из visual studio я добавляю новую «модель данных сущностей ADO.NET» и выбираю «Code First from Database» для содержимого модели. Однако единственными доступными мне объектами базы данных являются таблицы и представления. Хранимые процедуры недоступны. Это по дизайну или мне что-то не хватает?EF 6 Code First From Database - вызов существующего хранимого procdure

ответ

0

Вам необходимо определить DTO для каждой хранимой процедуры. Вы просто создаете простые классы, где имена свойств классов соответствуют имени столбцов, возвращаемых хранимой процедурой. Поэтому, когда вы вызываете хранимую процедуру из EF, ваши объекты создаются и заполняются. Производительность великолепна! Здесь я приклеиваю пример:

dbContext.Database.CommandTimeout = 3600; 
List<CarsDTO> objs = dbContext.Database.SqlQuery<CarsDTO>(
     "spGetCars @carMakeId", new SqlParameter("carMakeId", id) 
).ToList(); 
+0

Спасибо, что сработало красиво. – degmo

+0

Почему вы так говорите? Вам не нужно всегда указывать SqlDbType. Вы можете указать имя и значение параметра (объект). Помните, что int (ярлык для Int32) является объектом. Проверьте конструкторы SqlParameter здесь: https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter(v=vs.110).aspx –

Смежные вопросы