Я использую ADO.Net DataServices для предоставления модели данных сущности для Silverlight. Модель имеет хранимую процедуру, которая возвращает void. Я хочу вызвать эту процедуру у клиента Silverlight.Выполнение хранимой процедуры в Entity Framework из ADO.Net DataService
Мое понимание заключается в том, что я должен добавить метод [WebInvoke] в класс DataService и использовать DbCommand для вызова хранимой процедуры.
Вот мой код до сих пор:
using System.Data.Common;
using System.Data.Services;
using System.ServiceModel.Web;
namespace Foo.Web
{
public class PayrollDataService : DataService<Foo.Web.PayrollEntities>
{
public static void InitializeService(IDataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
config.UseVerboseErrors = true;
}
[WebInvoke]
public void RunMyProcedure()
{
DbConnection conn = this.CurrentDataSource.Connection;
DbCommand cmd = conn.CreateCommand();
// TODO: Call the stored procedure in the EF Data Model.
}
}
}
Может кто-то подтвердить, что это правильный подход, и показать пример использования DbCommand в этой ситуации?
Это имеет смысл. Я начал с модели EF и DataServices, потому что я думал, что хранимые процедуры полностью поддерживаются. Оказывается, они поддерживаются только при возврате типа Entity. Смотрите: http://stackoverflow.com/questions/578536/function-imports-in-entity-model-with-a-non-entity-return-type –
Я возвращаю типы сущностей в большинстве случаев, но это одно исключение. Должен ли я отделить этот метод от всех остальных? –
Я не вижу ничего плохого в том, чтобы отделить этот метод, поскольку он фактически не использует EF. Вы просто добавляете sproc туда, чтобы у вас был один метод доступа к данным. Есть аргументы в обоих направлениях. Pro = одинаковая модель; CON = седло, в отличие от методов для одного и того же рисунка. –