Entity Framework NullReferenceException при создании модели - PullRequest
4 голосов
/ 21 ноября 2011

Я сейчас работаю над проектом как нуб, когда дело касается WCF \ EF, используя сущности \ таблицы, созданные другим разработчиком.Я обычно довольно быстро догоняю новые вещи, и у меня есть небольшие основы того, как использовать текст данных для выполнения вашей работы в приложении.Моя единственная проблема заключается в том, что контекст, созданный другим разработчиком, похоже, не работает, и я не уверен, что проблема в модели, отображениях или таблице.

Вот основная предпосылка проекта. Разработчик сначала создал базу данных, а затем объекты POCO с сопоставлениями EF для этих объектов в таблицы.Он сделал это для того, чтобы позже было проще выполнить обновление с помощью новых столбцов \ таблиц.При создании модели сопоставления заменяются вместо сопоставлений EF путем переопределения события OnModelCreating и добавления сопоставлений в построитель модели для каждого из объектов.Затем следующая вещь, которая, кажется, происходит после этого, это исключение NullReferenceException:

at System.Data.Entity.ModelConfiguration.Configuration.Properties.Navigation.NavigationPropertyConfiguration.ValidateConsistency(NavigationPropertyConfiguration navigationPropertyConfiguration)
at System.Data.Entity.ModelConfiguration.Configuration.Properties.Navigation.NavigationPropertyConfiguration.Configure(EdmNavigationProperty navigationProperty, EdmModel model, EntityTypeConfiguration entityTypeConfiguration)
at System.Data.Entity.ModelConfiguration.Configuration.Types.EntityTypeConfiguration.ConfigureAssociations(EdmEntityType entityType, EdmModel model)
at System.Data.Entity.ModelConfiguration.Configuration.Types.EntityTypeConfiguration.Configure(EdmEntityType entityType, EdmModel model)
at System.Data.Entity.ModelConfiguration.Configuration.ModelConfiguration.ConfigureEntities(EdmModel model)
at System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo)
at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator()
at System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

Моя главная проблема в том, что я не могу найти какую-либо информацию, которая привела бы меня к причине этого, выполнив поиск, какЯ не могу найти других людей, которые имели эту проблему в этом конкретном методе.Я хотел бы включить фрагменты кода mappings \ POCOs \ использовании, но я нахожусь под NDA для этого проекта, и я не знаю, в какой степени это расширяется.Моя главная проблема, если кто-то может просто сказать мне, в какой области я должен искать причину этой проблемы ... Настройка POCO, Настройка сопоставлений или Настройка таблиц?Любая помощь будет принята с благодарностью!Я сам просмотрел весь код несколько раз, но, похоже, ничего не заметил, поэтому некоторая концентрация поможет.Я постараюсь помочь с чем я могу.

1 Ответ

6 голосов
/ 21 ноября 2011

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

Так как он компилировался нормально, а POCO выглядел нормально, я был почти уверен, что ошибка была с отображениями. Я рассмотрел контекст проекта и прокомментировал все объявления DbSet<x>, а также конфигурации для каждого из них. Затем я прошел один за другим, раскомментировав dbset и конфигурацию для объекта. Создание экземпляра контекста тогда будет успешным, и я сделаю следующий объект. В конце концов у меня остались 2 связанных объекта, разделяющих отношение один-к-одному, что при отсутствии комментария завершается создание экземпляра окончательного текста данных.

Отображения отношений не были правильно определены между двумя элементами. Эта ссылка помогла мне Ассоциации в EF Code First

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

Надеюсь, это поможет!

...