Поскольку единственное, что работает сейчас, - это сопоставление возвращаемого типа с сущностью, одним из обходных путей является создание представления, соответствующего возвращаемым данным, и создание сущности для представления. Это будет работать только в том случае, если SP выполняет SELECT для возврата набора результатов, а не возвращаемого значения. Я получил это для работы с примером приложения, например, так:
SP:
ALTER PROCEDURE [dbo].[DoSomething]
@param1 varchar(50),
@param2 varchar(50)
AS
BEGIN
DECLARE @ID INT
SET NOCOUNT ON;
INSERT tmp_header (fname, lname) VALUES (@param1, @param2)
SET @ID = SCOPE_IDENTITY()
SELECT @ID AS 'id'
END
ВИД:
CREATE VIEW [dbo].[View_1]
AS
SELECT 0 as id
Создайте функцию импорта, установив тип возвращаемого значения в View_1, и постройте модель.
в коде:
class Program
{
static void Main(string[] args)
{
using (PS_RADSTESTEntities ctx = new PS_RADSTESTEntities())
{
EntityConnection ec = ctx.Connection as EntityConnection;
ec.Open();
DbTransaction txn = ec.BeginTransaction();
ObjectResult<View_1> result = ctx.DoSomething("Toby", "Kraft");
View_1 row = result.Single();
int id = row.id;
// do some other interesting things ...
ctx.SaveChanges();
txn.Commit();
}
}
}
Обязательно установите одинаковые имена столбцов между представлением и SP.
Toby