2013-08-13 4 views
1

Я пытаюсь использовать шаблон репозитория для моего проекта vsto.Образец хранилища для выполнения хранимой процедуры с использованием Entity Framework

Как использовать шаблон хранилища для выполнения хранимой процедуры? Я использую Entity Framework. Любая ссылка на образец кода действительно была бы полезной

ответ

1

эта ссылка управляла мной. [Link]

Но при выполнении хранимой процедуры вы должны поставить «Exec» информатор имени С.П. Например: если зр является «sp_aa»

строка должна быть «EXEC sp_aa»

5

К вашему общему хранилищу добавить

public IEnumerable<T> ExecWithStoreProcedure(string query, params object[] parameters) 
{ 
     return _context.Database.SqlQuery<T>(query, parameters); 
} 

И тогда вы можете назвать его любым UnitOfWork/хранилище как

IEnumerable<Products> products = 
      _unitOfWork.ProductRepository.ExecWithStoreProcedure(
      "spGetProducts @bigCategoryId", 
      new SqlParameter("bigCategoryId", SqlDbType.BigInt) { Value = categoryId } 
    ); 
+1

Как добавить ProductRepository для _unitOfWork вы можете добавить пример кода класса _unitOfWork, как он реализует ProductRepository? – HaBo

+0

Спасибо @sunil, он отлично работает для меня. –

2

Беспоставочной общее решение в вашем хранилище будет:

private int ExecWithStoreProcedure(string query, params object[] parameters) 
{ 
    return _context.Database.ExecuteSqlCommand("EXEC " + query, parameters); 
} 

А потом несколько типичных примеров использования:

var param = new SqlParameter("SomethingToCheck", SqlDbType.NVarChar) { Value = shortCode };    
var result = ExecWithStoreProcedure("mySchema.myStoredProc @SomethingToCheck", param); 

с несколькими параметрами:

var param1 = new SqlParameter("SomeCode", SqlDbType.VarChar) { Value = shortCode }; 
var param2 = new SqlParameter("User", SqlDbType.VarChar) { Value = userName }; 
var result = ExecWithStoreProcedure("mySchema.myStoredProc @SomeCode, @User", param1, param2); 
Смежные вопросы