Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 5 ASP.NET MVC 5中已添加具有相同密钥的项错误_Asp.net Mvc 5_Entity Framework 6_Entity - Fatal编程技术网

Asp.net mvc 5 ASP.NET MVC 5中已添加具有相同密钥的项错误

Asp.net mvc 5 ASP.NET MVC 5中已添加具有相同密钥的项错误,asp.net-mvc-5,entity-framework-6,entity,Asp.net Mvc 5,Entity Framework 6,Entity,我正在将一个ASP.NET MVC 3项目升级为MVC 5(VS 2017),下面是我的代码行 IEnumerable<Country> countrydata = _db.Country.OrderBy(s => s.CountryName).ToList(); IEnumerable countrydata=\u db.Country.OrderBy(s=>s.CountryName.ToList(); 这行代码在MVC 3(在.NET 4项目中)中运行良好,但在针对

我正在将一个ASP.NET MVC 3项目升级为MVC 5(VS 2017),下面是我的代码行

 IEnumerable<Country> countrydata = _db.Country.OrderBy(s => s.CountryName).ToList();
IEnumerable countrydata=\u db.Country.OrderBy(s=>s.CountryName.ToList();
这行代码在MVC 3(在.NET 4项目中)中运行良好,但在针对.NET 4.6.1的MVC 5项目中抛出以下错误,有人知道为什么吗

已添加具有相同密钥的项

更新: 在进一步测试之后,MVC5/Entity Framework 6中对数据库的所有此类调用似乎都将失败,因为即使是下面的一行也会失败,并显示相同的错误消息

IEnumerable<AuthenticationType> authenticationProvider = _db.AuthenticationType.OrderBy(n => uthenticationProvider).ToList();
IEnumerable

下面是堆栈跟踪

位于System.Collections.Generic.Dictionary的System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)处位于System.Data.Metadata.Edm.ObjectItemAttributesEmblyLoader.LoadRelationshipTypes()处位于System.Data.Metadata.Edm.ObjectItemAttributesEmblyLoader.LoadTypesFromAssembly()处位于System.Data.Metadata.Edm.ObjectItemAssemblyLoader.Load()的System.Data.Metadata.Edm.ObjectItemAttributeAsemblyLoader.Load()的System.Data.Metadata.Edm.AssemblyCache.LoadAssembly(程序集程序集、布尔加载引用程序集、ObjectItemLoadingSessionData加载数据)的System.Data.Metadata.Edm.AssemblyCache.LoadAssembly(程序集程序集、布尔加载引用程序集、KnownAssembliesSet knownAssemblies、EdmItemCollection EdmItemCollection、Action
1 logLoadMessage、Object&loaderCookie、Dictionary
2&typesInLoading、List
1&errors)位于System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection ObjectItemCollection,程序集程序集,Boolean LoadReferencedAssembly,EdmItemCollection EdmItemCollection,操作'1 logLoadMessage)位于System.Data.Metadata.Edm.ObjectItemCollection.ImplicitLoadAssemblyForType(类型,EdmItemCollection EdmItemCollection)在System.Data.Metadata.Edm.MetadataWorkspace.System.Data.Objects.ObjectContext.GetTypeUsage(Type entityCLRType)在System.Data.Objects.ObjectContext.GetEntitySetForNameAndType(String entitySetName,Type entityCLRType,String exceptionParameterName)在System.Data.MetadataWorkspace.ImplicitLoadAssemblyForType(Type类型,Assembly callingAssembly)上位于D:\Projects\SSAMapper\Models\SSAMapper.Designer.cs中SSAMapper.Models.ssamapperenties.get_Country()处的System.Data.Objects.ObjectContext.CreateObjectSet[TEntity](字符串entitySetName)处:位于SSAMapper.Models.AdminModel.GetCountries的第240行(布尔状态,布尔用户国家,布尔加载停用国家)在D:\Projects\SSAMapper\Models\AdminModel.cs中:第1116行


我倾向于将其升级到Entity Framework 6时出错。它使用延迟加载,并且您已经删除了
.ToList()
因此,在任何数据访问之前都会引发异常。我们可以在堆栈跟踪中看到,异常发生在创建
ObjectSet
的过程中,如果我理解正确,则在查看关系以确保加载了其类型的程序集时会出现异常

我将查看.edmx中概念模型上的
,并查看是否存在任何重复项。如果您的项目中有重复的模型类,或者如果在bin中的多个程序集中定义了任何模型类,似乎也会发生这种情况(例如,如果重命名了项目/目标程序集,但原始dll仍然存在)


以下是一些可能有用的链接:我会仔细查看,确保没有遗漏任何内容。所显示的源代码也有相同的错误。

错误表示重复。您能指定_db_Country的内容吗?重复是我的第一个想法,但我检查了表,没有重复。我有e即使对代码应用了DISTINCT子句,但我仍然得到了相同的错误。您能描述一下您的表结构是如何相似的以及您的值是什么吗?另外,您能确认调用ToList()导致崩溃吗?您可以尝试执行_db.Country.OrderBy(s=>s.CountryName)我只是想看看它是否能自己工作。好的。我仍然倾向于升级出错。它使用延迟加载,您已经删除了
.ToList()
因此,在任何数据访问之前都会引发异常。我们可以在堆栈跟踪中看到它是在
对象集的创建过程中发生的,如果我理解正确,它看起来是在查看关系以确保加载其类型的程序集时发生的。我将查看.e中概念模型上的
sdmx并查看是否有任何重复。如果您有重复的模型类或…@xr280xr,升级出错肯定是唯一的解释,因为在全新的ASP.NET MVC 5和Entity Framework 6项目中,相同的代码行执行得非常好。我只需删除.EDMX file并从升级的项目中重新创建了它,然后只做了一些代码更改,使其与EntityFramework6兼容。