模型创建期间的实体框架NullReferenceException

时间:2011-11-20 22:34:47

标签: c# entity-framework-4.1 poco nullreferenceexception

我正在使用另一个开发人员创建的实体\表来处理WCF \ EF作为菜鸟的项目。我通常很快就能抓住新事物,而且我对如何使用datacontext在应用程序中完成工作有一些小的基础知识。我唯一的问题是,其他开发人员创建的上下文似乎不起作用,我不确定问题是模型,映射还是表。

这是项目的基本前提。开发人员首先创建数据库,然后创建POCO对象,使用EF映射这些对象到表。他这样做是为了确保以后使用较新的columns \ tables轻松升级。在创建模型时,通过覆盖OnModelCreating事件并将映射添加到每个对象的模型构建器来替换映射而不是EF的映射。然后,接下来似乎发生的事情是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)

我的主要问题是,我似乎无法通过搜索找到任何可以引导我找到原因的信息,因为我似乎无法找到在这个特定方法中遇到此问题的其他人。我将包含映射\ POCOs \用法的代码片段,但我在这个项目的NDA下,我不知道扩展到什么程度。我的主要问题是,如果有人可以告诉我应该在哪个方面查找此问题的原因... POCO设置,映射设置或表设置?任何帮助将不胜感激!我已经多次查看了所有代码,但似乎无法发现任何事情,所以一些重点会有所帮助。我会尽力帮助。

1 个答案:

答案 0 :(得分:6)

行。我在这里回帖,所以如果人们在他们的环境中遇到这个方法中的问题,他们可以找出它所在的位置。

由于它编译得很好,并且POCO看起来很好,我很确定错误与映射有关。我浏览了项目中的上下文,并注释掉了所有DbSet<x>声明,以及每个声明的映射配置。然后我逐个完成,取消注释实体的dbset和配置。然后上下文实例化会成功,我会做下一个实体。我最终留下了两个相关实体共享一对一的关系,当取消注释时,最终的datacontext实例化将失败。

两个项目之间未正确定义关系映射。这个链接帮助我Associations in EF Code First

这似乎有误,因为它在验证模型时无法导航导航属性,因此我很确定错误可能由于更多原因而不仅仅发生,我碰巧是第一个在此方法中找到它的人。

希望这有帮助!

相关问题