gpt4 book ai didi

c# - 模型创建期间的 Entity Framework NullReferenceException

转载 作者:太空狗 更新时间:2023-10-30 00:56:14 25 4
gpt4 key购买 nike

我目前作为菜鸟从事一个项目,涉及 WCF\EF,使用另一位开发人员创建的实体\表。我通常很快就能 catch 新事物,并且我掌握了一些关于如何使用数据上下文在应用程序中完成工作的小基础知识。我唯一的问题是其他开发人员创建的上下文似乎不起作用,而且我不确定问题出在模型、映射还是表上。

这是该项目的基本前提。开发人员首先创建数据库,然后将具有这些对象的 EF 映射的 POCO 对象创建到表中。他这样做是为了确保以后可以轻松升级新的列\表。在创建模型时,通过覆盖 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)

我的主要问题是,我似乎找不到任何可以通过搜索找到导致此问题的信息,因为我似乎找不到其他人在这种特定方法中遇到过这个问题。我会包括 mappings\POCOs\usage 的代码片段,但我在这个项目的 NDA 下,我不知道扩展到什么程度。我的主要问题是,是否有人可以告诉我我应该查看哪个区域来查找此问题的原因……POCO 设置、映射设置或表设置?任何帮助将不胜感激!我自己已经多次查看了所有代码,但似乎无法发现任何东西,所以一些重点会有所帮助。我会尽我所能提供帮助。

最佳答案

好的。我发回这里是为了如果人们稍后在他们的环境中遇到此方法中的问题,他们可以找出问题所在。

因为它编译得很好,而且 POCO 看起来也很好,所以我很确定错误出在映射上。我浏览了项目中的上下文,并注释掉了所有 DbSet<x>声明,以及每个人的映射配置。然后我一个一个地检查,取消注释实体的 dbset 和配置。然后上下文实例化会成功,我会做下一个实体。我最终只剩下 2 个共享一对一关系的相关实体,当未注释时,最终的数据上下文实例化将失败。

两个项目之间的关系映射没有正确定义。此链接帮助我解决了问题 Associations in EF Code First

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

希望对您有所帮助!

关于c# - 模型创建期间的 Entity Framework NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8205311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com