#c# #asp.net-mvc #entity-framework #dbcontext
#c# #asp.net-mvc #entity-framework #dbcontext
Вопрос:
Короткий и приятный:
Когда я щелкаю правой кнопкой мыши по своему классу DbContext и выбираю «Просмотреть модель данных объекта (только для чтения)», я получаю всплывающее диалоговое окно с надписью «Ссылка на объект не установлена для экземпляра объекта», это не отображается как исключение или ошибка вывода при обычной компиляции и запуске моего кода;На самом деле, кажется, что отношения и классы работают нормально, когда я запрашиваю базу данных из консольного приложения, в котором я все тестирую.
Кто-нибудь знает, почему я получаю эту ошибку? Кроме того, существуют ли какие-либо инструменты, помогающие проверить мой режим данных? Иногда я получаю ошибки, которые указывают мне на недостатки, но чаще всего мне не нужно запускать запрос, чтобы проверить что-то. Приветствуются любые советы!
Более длинная версия:
Я работал над переключением модели данных разработчика EF database-first на code-first из существующей модели базы данных. Существует ~ 80 объектов, которые я сопоставил с классами POCO, и определил по крайней мере столько же отношений, используя fluent API. Я начал с классов, построенных из каркасов, запустив мастер Visual Studio в базе данных, и это сработало нормально, но я провел масштабную рефакторинг, чтобы заставить базу кода работать с новыми моделями.
В любом случае, сейчас я тестирую модель данных, добавляя по одному объекту за раз, чтобы я знал, какие объекты и отношения POCO вызывают проблемы. Я хотел бы использовать мощные инструменты EF, чтобы помочь проверить / визуализировать модель, но они выдают ошибку, которую я описал выше. Опять же, любая помощь приветствуется.
Комментарии:
1. По моему опыту, при первом использовании EF Power Tools и Database вам следует щелкнуть правой кнопкой мыши в проекте, выбрать подменю EF, затем выбрать «Обратный инжиниринг». Это сгенерирует все необходимые модели и DbContext.
2. Это то, что я сделал, как я сказал в длинном объяснении. Однако с этими моделями были проблемы, связанные как с взаимодействием с ASP.NET приложение, которое их использует, и отношения между ними. Это усугубляется тем фактом, что это устаревшая база данных с несколькими рудиментарными компонентами и общим отсутствием соответствия соглашению.
3. Извините, еще одна вещь, поскольку SO не позволит мне отредактировать мой первый комментарий. Мощные инструменты EF работают, если я запускаю их в пустом решении / проекте, который содержит только «обратный инженерный» DbContext и models. К сожалению, этот процесс полностью испортил большинство отношений и именование свойств; поэтому модель не может получить доступ к базе данных.
4. Если база данных «нетрадиционная», вам нужно будет исправить модели и, возможно, использовать EF fluent API для настройки указанных моделей. EF Fluent API
5. Как я уже сказал в своем вопросе, я уже это делаю. Но это не то, с чем я ищу помощи, я ищу способы визуализации / проверки моей модели, а EF power tools не работает! Несмотря на это, я ценю предложенное вами руководство, спасибо.
Ответ №1:
Этот пост указал мне правильное направление
EF Power Tools очень чувствителен к строкам подключения. В моем случае я обнаружил, что СПОСОБ ссылки на строку conn в классе DbContext имеет значение:
internal class MyContext : DbContext
{
//Both Migrations and EF PowerTools were okay with this…
public MyContext() : base(“name=MyConnStringName”)
//Migrations was okay with this, but EF PowerTools Throws “object reference not set to an instance of an object” in a dialog box… Very confusing :s
public MyContext() : base(ConfigurationManager.ConnectionStrings[“MyConnStringName”].ConnectionString)