#asp.net-mvc #entity-framework #stored-procedures
#asp.net-mvc #entity-framework #хранимые процедуры
Вопрос:
У меня есть одна хранимая процедура с различными действиями в ней. Например, Insert, select, update все находятся в одной хранимой процедуре, и я выполняю ее, используя условие if else.
BEGIN
if(@type = 'add')
INSERT INTO [dbo].[napme]
([firstname]
,[lastname]
,[Address]
,[City])
VALUES
(@firstname,@lastname,@Address,@City)
if(@type = 'select')
select * from napme
END
Теперь я могу использовать эту процедуру в MVC, используя Entity Framework. Если да, то как?
Как только такой метод сопоставляет параметры, но я не могу сопоставить @type
, может кто-нибудь предложить какой-нибудь простой способ
Ответ №1:
Вы можете попробовать так
var courseList = ctx.Database.SqlQuery<YourEntityName>("exec ProcName @Param1", Param1).ToList<YourEntityName>();
Комментарии:
1.
@Param1
это не что иное, как ваш параметр, в который вы можете передать свой@Type
Ответ №2:
Если вы планируете использовать Code-First EntityFramework, вы можете сопоставить операции вставки, обновления и удаления с хранимыми процедурами, если хотите.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder
.Entity<YourEntityClass>()
.MapToStoredProcedures();
}
С примером SP, подобным этому:
CREATE PROCEDURE [dbo].[YourEntityClass_Insert]
@param1 nvarchar(max),
@param2 nvarchar(max)
AS
BEGIN
INSERT INTO [dbo].[YourEntityClass] ([col1], [col2])
VALUES (@param1, @param2)
Смотрите здесь для получения дополнительной информации.
Если вы планируете выполнить SP по другим причинам (не CRUD), вам придется выполнить SP в соответствии с ответом бхарата.