#c# #sql-server #entity-framework-6
#c# #sql-server #entity-framework-6
Вопрос:
Новичок в Entity Framework, но я пытаюсь привести своего работодателя в 20-й век. Вот в чем проблема. У нас есть сторонний продукт, который мы используем для большинства видов деятельности нашей организации. Нам не разрешено вносить какие-либо изменения в их базу данных. Мы поддерживаем вторую базу данных, в которую мы помещаем любой внутренний код для работы с их таблицами (только для выбора)
У нас есть ежевечерний отчет, который выполняется как задание из второй базы данных, которая извлекает информацию из базы данных третьей стороны, форматирует ее в Excel (в любом случае, вроде), а затем отправляет ее требуемым пользователям.
Я пытаюсь создать версию отчета для веб-сайта, чтобы результат был более чистым. Я смоделировал тестовый сайт, и вся функциональность отлично работает с макетом. Я скопировал запрос задания в хранимую процедуру, добавил в проект объект edmx, указывающий на хранимую процедуру в качестве источника через DbContext. Это не вернуло никаких данных. Одна из вещей, которые я заметил, это то, что когда я добавил объект edmx, диаграмма модели была пустой.
После долгих исследований, похоже, не так много примеров первой реализации Entity Framework в базе данных, подключающейся к хранимой процедуре в качестве ее источника. После проверки того, что я смог найти, я довел проект до такой степени, что он будет создан и запущен, но на сгенерированной им странице не было никаких данных. Я знаю, что страница работала, потому что макет и другие элементы на странице присутствуют. Я решил, что умное мышление не работает, поэтому пришло время подумать глупо.
Поскольку большинство реализаций подключены к таблицам, я решил создать представление во внешней базе данных. Когда я перестроил объект edmx, указывающий на представление, диаграмма модели была заполнена, а не пуста. Я подумал, что это шаг в правильном направлении, но на странице снова не было показано никаких данных.
Задание SQL генерирует данные при запуске из внешней базы данных, новое представление генерирует данные в диспетчере SQL, когда я запрашиваю его. Проект может видеть схему представления, когда я настраиваю ее в проекте. Проект создается и запускается, но данные не отображаются или не отображаются.
Может кто-нибудь указать мне направление того, что я мог бы проверить, чтобы выяснить, что происходит не так? Заранее спасибо.
Код, добавляемый по запросу (использование удалено для краткости)
namespace MissingMinutes.Domain.Concrete {
public class EFDbContext : DbContext {
public DbSet<MissingMinuteInstance> MMInstances { get; set; }
}
}
namespace MissingMinutes.Domain.Concrete {
public class EFReportRepository : IOdysseyRepository {
private EFDbContext context = new EFDbContext();
public IQueryable<MissingMinuteInstance> MMInstances {
get { return context.MMInstances; }
}
}
}
namespace MissingMinutes.WebUI.Controllers {
public class ReportController : Controller {
private IOdysseyRepository repository;
public ReportController(IOdysseyRepository odysseyRepository) {
this.repository = odysseyRepository;
}
public ViewResult List() {
return View(repository.MMInstances);
}
}
}
Комментарии:
1. Используйте System.Data.SqlClient
2. 1) И когда они сначала перестанут делать все на бумаге, мы сможем поговорить о том, чтобы ввести их в 21-й век. Детские шаги 2) некоторый код, добавленный выше, однако не уверен, какой код будет полезен, поскольку я сам только изучаю EF. 3) с удовольствием исключаю ссылки на любые сайты с примерами, но все, что приходит в голову моему google-foo, — это те же 3 или 4 статьи. 4) Каждый раз, когда я задаю здесь вопрос, кто-то жалуется на то, как я его задал: слишком много кода, недостаточно, слишком много объяснений, недостаточно объяснений.
3. Тем не менее, надеялся узнать что-то новое. Это моя резервная копия.
4. «… Каждый раз, когда я задаю здесь вопрос, кто-то жалуется …» — не принимайте это на свой счет. Мы просто пытаемся сделать SO отличным сайтом для всех, в отличие от ужасных социальных форумов MSDN
В любом случае, я подумал, что ваш январский вопрос был в порядке, поэтому я дал вам положительный отзыв
желаю вам всего наилучшего