Первая сохраненная процедура EF 6 - только для чтения

Я искал несколько сообщений, но придумал короткий. Я использую код EF6, сначала пытающийся получить результаты из хранимой процедуры, которая уже настроена в базе данных. Мое приложение прост, оно берет данные с двух разных серверов, выполняет некоторую бизнес-логику, а затем показывает пользователя. Я могу использовать файл .edmx fine, который отображает функцию в XML файле. Когда я использую Power Tools для показа себя XML файлом, я не вижу функцию импорта из моего кода ниже, поэтому я либо не пробовал установку, либо я не могу использовать ExecuteFunction().

  • Можно ли сначала использовать код ExecuteFunction() с кодом? Моя хранимая процедура возвращает только записи. Причина, по которой я установил эту настройку, состоит в том, что хранимая процедура передает другое приложение, и мы хотим сохранить все изменения в запросе в одном месте (SSMS). Я понимаю, что могу использовать ExecuteStoredQuery/ExecureStoredCommand, но я хотел придерживаться соглашения, если бы я использовал модель .edmx.

  • Если я могу использовать ExecuteFunction, где и как мне настроить свой DbContext для распознавания хранимой процедуры? С моей установкой ниже я получаю сообщение об ошибке

Не удалось найти FunctionImport {0} в контейнере {1}

Можно ли использовать Fluent API? Спасибо.

    public class JobContext : DbContext
    {
        public JobContext()
            : base("name=JobContext")
        {
            // My context will only define a slice of the database
            Database.SetInitializer<JobContext>(null);
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.ComplexType<Job>();
        }

        public virtual ObjectResult<Job> uspGetJobs(string startDate)
        {
            var startDateParameter = startDate != null ?
                new ObjectParameter("startDate", startDate) :
                new ObjectParameter("startDate", typeof(string));

            return ((IObjectContextAdapter)this).ObjectContext.<Job>("uspGetJobs", startDateParameter);
        }
    }

Ответ 1

поскольку это была хранимая процедура только для чтения, я закончил это, вместо того, чтобы пытаться имитировать сгенерированную модель.

 public virtual List<Jobs> uspGetJobs(string startDate)
 {
    var startDateParameter = startDate != null ?
                             new SqlParameter("startDate", startDate) :
                             new SqlParameter("startDate", typeof(string));

    return this.Database.SqlQuery<PlannedJobs>("uspGetPlannedJobs @startDate, @locationCode", startDateParameter, locationCodeParameter).ToList();
 }