C# OAuthWebSecurity.CreateOrUpdateAccount生成外键约束异常
在过去的几个小时里,我一直在尝试在我的MVC4网站上添加facebook登录 到目前为止,“本地帐户注册”(WebSecurity.CreateAccount()工作正常 在我的businesslogic中,我的代码如下所示:C# OAuthWebSecurity.CreateOrUpdateAccount生成外键约束异常,c#,asp.net-mvc,oauth,C#,Asp.net Mvc,Oauth,在过去的几个小时里,我一直在尝试在我的MVC4网站上添加facebook登录 到目前为止,“本地帐户注册”(WebSecurity.CreateAccount()工作正常 在我的businesslogic中,我的代码如下所示: public ValidationReturn<User> AddUser(User data, string provider, string providerUserId) { .... Repository.Insert(data); SaveChan
public ValidationReturn<User> AddUser(User data, string provider, string providerUserId)
{
....
Repository.Insert(data);
SaveChanges();
OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, data.LoginName);
public ValidationReturn AddUser(用户数据、字符串提供程序、字符串提供程序userid)
{
....
储存库。插入(数据);
保存更改();
OAuthWebSecurity.CreateOrUpdateAccount(提供程序、providerUserId、data.LoginName);
现在,当我尝试创建这样的帐户时,OAuthWebSecurity.CreateOrUpdateAccount会引发一个异常:
INSERT语句与外键约束冲突
“FK_dbo.webpages_OAuthMembership_dbo.webpages_Membership_UserId”
数据库“Wims”、表“dbo.webpages\u Membership”中发生冲突,
列“UserId”
我在UserTable中看到了我的用户,我了解db方案为何崩溃…但我不知道原因…OAuthWebSecurity.CreateOrUpdateAccount是否也应该在网页中创建记录?如果是,密码如何
我在网上查阅了一些教程,如下所示:
或
我看不出我在这里错过了什么
谢谢您的时间。好的,我刚刚发现…我使用代码第一类,在初始化simplemembership时声明系统创建的表的结构…(因为我需要将角色放在一个对象中,以便从网站对其进行管理) 例如:
[Table("webpages_OAuthMembership")]
public class OAuthMembership
{
[Key, Column(Order = 0), StringLength(30)]
public string Provider { get; set; }
[Key, Column(Order = 1), StringLength(100)]
public string ProviderUserId { get; set; }
public int UserId { get; set; }
//[Column("UserId"), InverseProperty("OAuthMemberships")]
//public Membership User { get; set; }
}
有些FK是错的。。
天哪
希望它能帮助别人对于我来说,我发现我为成员模型编写的代码在OAuthMembership上有一个外键返回到成员表。这是不正确的,因为您可以使用OAuthmbership登录,而不需要本地成员记录。 我不得不注释掉以下几行:
[Table("webpages_Membership")]
public class Membership
{
public Membership()
{
Roles = new List<Role>();
//OAuthMemberships = new List<OAuthMembership>();
}
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public int UserId { get; set; }
public DateTime? CreateDate { get; set; }
[StringLength(128)]
public string ConfirmationToken { get; set; }
public bool? IsConfirmed { get; set; }
public DateTime? LastPasswordFailureDate { get; set; }
public int PasswordFailuresSinceLastSuccess { get; set; }
[Required, StringLength(128)]
public string Password { get; set; }
public DateTime? PasswordChangedDate { get; set; }
[Required, StringLength(128)]
public string PasswordSalt { get; set; }
[StringLength(128)]
public string PasswordVerificationToken { get; set; }
public DateTime? PasswordVerificationTokenExpirationDate { get; set; }
public ICollection<Role> Roles { get; set; }
//[ForeignKey("UserId")]
//public ICollection<OAuthMembership> OAuthMemberships { get; set; }
}
[表格(“网页\会员”)]
公共班级成员资格
{
公众会员资格()
{
角色=新列表();
//OAuthMemberships=新列表();
}
[Key,DatabaseGenerated(DatabaseGeneratedOption.None)]
public int UserId{get;set;}
公共日期时间?CreateDate{get;set;}
[第128段]
公共字符串确认令牌{get;set;}
公共bool?已确认{get;set;}
公共日期时间?LastPasswordFailureDate{get;set;}
public int passwordfailuressincelastsucture{get;set;}
[必需,字符串长度(128)]
公共字符串密码{get;set;}
公共日期时间?PasswordChangedDate{get;set;}
[必需,字符串长度(128)]
公共字符串密码salt{get;set;}
[第128段]
公共字符串PasswordVerificationToken{get;set;}
公共日期时间?PasswordVerificationTokenExpirationDate{get;set;}
公共ICollection角色{get;set;}
//[外键(“用户ID”)]
//公共ICollection OAuthMemberships{get;set;}
}