Я пытаюсь использовать Entity Framework с хранимыми процедурами и POCOS и двумя различными проектами.
У меня есть один проект DataAccess (для моих edmx и DataContexts) и один проект BusinessEntities (для моих POCO).
DataAccess имеет ссылку на BusinessEntities.
В моей БД у меня есть довольно стандартный SP:
CREATE STORED PROCEDURE GetHeader
@id CHAR(35)
AS
BEGIN
SELECT ID, Name FROM mytable WHERE ID = @id
END
Текст данных:
public class DbContext : ObjectContext
{
public ObjectResult<BusinessEntities.GetHeaderResult> GetHeader(string id)
{
return base.ExecuteFunction<BusinessEntities.GetHeaderResult>("GetHeader", new ObjectParameter("id", id));
}
}
Если я толькопойти так (EDMX был обновлен с SP, но функция не была импортирована) У меня есть эта ошибка:
System.InvalidOperationException: The FunctionImport 'GetHeader' could not be found in the container 'DbEntities'.
Если я импортирую функцию правильно, у меня появляется эта ошибка:
System.InvalidOperationException: параметр типа «BusinessEntites.GetHeaderResult» в ExecuteFunction несовместим с типом «DbModel.GetHeaderResult», возвращаемым функцией.
Я полагаю, что здесь отсутствует только простая настройка, но я не могу ее захватить.
Обратите внимание, что файл EDMX имеет правильную настройку (CodeGenerationStrategy имеет значениенет, CustomTool пуст)