Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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
C# OAuthWebSecurity.CreateOrUpdateAccount生成外键约束异常_C#_Asp.net Mvc_Oauth - Fatal编程技术网

C# OAuthWebSecurity.CreateOrUpdateAccount生成外键约束异常

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

在过去的几个小时里,我一直在尝试在我的MVC4网站上添加facebook登录

到目前为止,“本地帐户注册”(WebSecurity.CreateAccount()工作正常

在我的businesslogic中,我的代码如下所示:

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;}
}