不能用实体框架来解决这个问题

时间:2014-02-26 22:58:26

标签: c# asp.net entity-framework .net-4.0

我有这个错误并且它的地狱之物已经失去了一天试图解决它可以有人帮助我,请相信这是与我的外键有关,但无法弄清楚什么是错的。< / p>

概念模型类型'socialprofilesModel.FK_Logins_Users'中的成员'Users'不存在于CLR类型'socialprofilesModel.FK_Logins_Users1'中。

说明:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

Exception Details: System.Data.MappingException: The Member 'Users' in the conceptual model type 'socialprofilesModel.FK_Logins_Users' is not present in the CLR type 'socialprofilesModel.FK_Logins_Users1'.

来源错误:

Line 22:  
Line 23:             List<SPLogin> validUser;
Line 24:             validUser = socialProfileContext.ValidateUser(txtuserName.Text, txtPassword.Text);
Line 25:             if (validUser !=null)
Line 26:                 {

Source File: c:\Users\dave\Documents\Visual Studio 2012\WebSites\cmsforletsmakeapps\admin\Login.aspx.cs    Line: 24 

堆栈追踪:

[MappingException: The Member 'Users' in the conceptual model type 'socialprofilesModel.FK_Logins_Users' is not present in the CLR type 'socialprofilesModel.FK_Logins_Users1'.]
   System.Data.Mapping.DefaultObjectMappingItemCollection.GetObjectMember(EdmMember edmMember, StructuralType objectType) +8321746
   System.Data.Mapping.DefaultObjectMappingItemCollection.LoadAssociationTypeMapping(ObjectTypeMapping objectMapping, EdmType edmType, EdmType objectType, DefaultObjectMappingItemCollection ocItemCollection, Dictionary`2 typeMappings) +169
   System.Data.Mapping.DefaultObjectMappingItemCollection.LoadObjectMapping(EdmType edmType, EdmType objectType, DefaultObjectMappingItemCollection ocItemCollection, Dictionary`2 typeMappings) +234
   System.Data.Mapping.DefaultObjectMappingItemCollection.LoadTypeMapping(EdmType edmType, EdmType objectType, DefaultObjectMappingItemCollection ocItemCollection, Dictionary`2 typeMappings) +100
   System.Data.Mapping.DefaultObjectMappingItemCollection.LoadEntityTypeOrComplexTypeMapping(ObjectTypeMapping objectMapping, EdmType edmType, EdmType objectType, DefaultObjectMappingItemCollection ocItemCollection, Dictionary`2 typeMappings) +445
   System.Data.Mapping.DefaultObjectMappingItemCollection.LoadObjectMapping(EdmType edmType, EdmType objectType, DefaultObjectMappingItemCollection ocItemCollection, Dictionary`2 typeMappings) +175
   System.Data.Mapping.DefaultObjectMappingItemCollection.LoadObjectMapping(EdmType cdmType, EdmType objectType, DefaultObjectMappingItemCollection ocItemCollection) +82
   System.Data.Mapping.DefaultObjectMappingItemCollection.TryGetMap(String identity, DataSpace typeSpace, Boolean ignoreCase, Map& map) +333
   System.Data.Metadata.Edm.ClrPerspective.TryGetTypeByName(String fullName, Boolean ignoreCase, TypeUsage& typeUsage) +91
   System.Data.Objects.ObjectContext.GetTypeUsage(Type entityCLRType) +111
   System.Data.Objects.ObjectContext.GetEntitySetForNameAndType(String entitySetName, Type entityCLRType, String exceptionParameterName) +30
   System.Data.Objects.ObjectContext.CreateObjectSet(String entitySetName) +60
   SPDataContext.socialprofilesEntities.get_SPLogins() +102
   SPDataContext.EntityFramework.MyContext.ValidateUser(String username, String password) +165

[EntityContextException: ValidateUser failed.]
   SPDataContext.EntityFramework.MyContext.ValidateUser(String username, String password) +1442
   admin_Login.btnlogin_Click(Object sender, EventArgs e) in c:\Users\dave\Documents\Visual Studio 2012\WebSites\cmsforletsmakeapps\admin\Login.aspx.cs:24
   Telerik.Web.UI.RadButton.OnClick(ButtonClickEventArgs e) +134
   Telerik.Web.UI.RadButton.RaisePostBackEvent(String eventArgument) +284
   Telerik.Web.UI.RadButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +42
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +9703558
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724

数据库编辑请找到我的edmx文件请注意我只是粘贴它导致长度会超过什么允许发布所以请原谅我,如果不正确的方式。

http://pastebin.com/hZU8zmRu

1 个答案:

答案 0 :(得分:1)

我完全没有解决问题的办法,但我可以检查和测试的东西很少:

  • 您的EDMX文件是版本3:

    <edmx:Edmx Version="3.0" ...>
    

    从我自己的项目中我可以看到版本3用于.NET 4.5(而不是.NET 4.0,它使用版本2用于EDMX)。此外,文件中出现的UseStrongSpatialTypes属性表示此文件适用于.NET 4.5。或者您下载并使用EF 6 Nuget包吗?即使在.NET 4.0下,EF 6也许有可能支持版本3,但我不确定。

  • 您的异常消息中的搜索字符串FK_Logins_UsersFK_Logins_Users1都无法在整个EDMX文件中找到。 (但是名称中有一个FK_SPLogins_Users附加“SP”。)您是否在完全中粘贴了异常消息?如果是,则表示嵌入在生产/测试系统上发生错误的组件中的EDMX不是您在问题中粘贴的那个。 EDMX是否可能已更改,但应用程序未重新编译/重新部署?

  • 概念模型部分不会包含“成员”Users(作为例外声明),但名称为User的成员。你有没有在某个时候开启或关闭名称复数?无论如何,它再次表明您的问题中的EDMX与部署的EDMX不同。

  • 您的EDMX中的代码生成策略为Default

    <DesignerProperty Name="CodeGenerationStrategy" Value="Default" />
    

    这意味着您应该在VS解决方案资源管理器中的EDMX文件下有一个XXX.Designer.cs文件(打开EDMX文件左侧的+节点)。该文件包含从EntityObject派生的实体生成的代码(=异常所说的“CLR类型”)。也许这个文件与EDMX文件不是最新的,除非代码生成在模型更改后由于某种原因没有自动运行,或者您手动更改了代码文件或在xml编辑器中更改了EDMX文件,否则不应该发生此文件。右键单击解决方案资源管理器中的edmx文件以强制生成代码时,可以尝试使用“运行自定义工具”(或类似工具)。

总而言之,问题看起来与部署的EDMX和部署代码不匹配,您应该仔细检查VS中的版本,或者重新运行自定义代码生成工具并重新编译和重新部署应用程序。