gpt4 book ai didi

c# - MVC 成员资格问题 - C#、EntityFramework

转载 作者:行者123 更新时间:2023-11-30 14:17:17 25 4
gpt4 key购买 nike

在我的代码优先 MVC3 项目中尝试扩展 MVC 成员资格提供程序后出现奇怪的错误。

错误是:

EntityType 'MembershipUser' has no key defined. Define the key for this EntityType.

EntitySet "MembershipUsers" is based on type "MembershipUser" that has no keys defined

我已经设置了标准的 asp.net 成员资格,但添加了一个额外的表和模型,称为 UserDetails,其中外键是 aspnet_Users 中的 UserId 字段。

一旦将条目插入到用户表中,我就获得了 UserId 并尝试在 Useretails 表中输入其他详细信息,但此时出现了这些错误。这是其他相关代码。帐户 Controller :

if (createStatus == MembershipCreateStatus.Success)
{
//Add other user details
UserRepository _user = new UserRepository();
UserDetails userDetails = new UserDetails();

userDetails.EmployeeNumber = Request.Form["EmployeeNumber"];
userDetails.Title = Request.Form["Title"];
userDetails.FirstName = Request.Form["FirstName"];
userDetails.Initials = Request.Form["Initials"];
userDetails.Surname = Request.Form["Surname"];
userDetails.Nino = Request.Form["Nino"];

_user.AddUserDetails(userDetails, model.Email);
return RedirectToAction("Welcome", "Home");
}

用户资料库:

    public MembershipUser GetUserByEmail(string email)
{
MembershipUser user = Membership.GetUser(email);
return user;
}


public void AddUserDetails(UserDetails userDetails, string email)
{
MembershipUser user = GetUserByEmail(email);
Guid userGuid = (Guid)Membership.GetUser(email).ProviderUserKey;
userDetails.UserID = userGuid; //Add UserID foreign key
using (IntranetApplication db = new IntranetApplication())
{
db.UserDetails.Add(userDetails);
db.SaveChanges();
}
}

错误在 db.SaveChanges 行上触发。

由于 MemberShip 用户本身是一个类而不是 Entity Framework 的一部分,有谁知道如何将 UserID 设置为主键?我已经检查了数据库并且它已经设置好了,所以不知道如何在代码中修改它。

谢谢 - 感谢您的帮助

最佳答案

你有两个问题。

  1. MembershipUser 的映射未明确或隐式定义键。您没有显示映射代码,但错误就是这么说的。
  2. 无论如何,您都不应该尝试映射 MembershipUser

(2) 是这里最重要的一点,因为它使 (1) 变得无关紧要。 You should never depend on the SQL Provider DB tables .您也不应将 MembershipUser 用作实体,因为您无法控制它, 维护它的人并不打算以这种方式使用它。

从成员(member) API 获取您的成员(member)数据,而不是通过 EF 直接访问数据库。

关于c# - MVC 成员资格问题 - C#、EntityFramework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6278565/

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