Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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# 使用Linq to SQL插入时出现外键异常,但可以';我不明白为什么?_C#_Asp.net_Sql - Fatal编程技术网

C# 使用Linq to SQL插入时出现外键异常,但可以';我不明白为什么?

C# 使用Linq to SQL插入时出现外键异常,但可以';我不明白为什么?,c#,asp.net,sql,C#,Asp.net,Sql,INSERT语句与冲突 外键约束 “FK_工作清单_aspnet_会员资格”。这个 数据库中发生冲突 “C:\JOBPOST\APP\u DATA\ASPNETDB.MDF”, 表“dbo.aspnet_成员资格”,第列 “UserId”。该语句已被删除 终止 我的FK_工作列表_aspnet_成员设置为: 主表(aspnet\u成员资格) 外键表(作业列表) 对两个表使用列UserId(uniqueidentifier),当前仅设置2个UserId JobList具有自动索引主键intJo

INSERT语句与冲突 外键约束 “FK_工作清单_aspnet_会员资格”。这个 数据库中发生冲突 “C:\JOBPOST\APP\u DATA\ASPNETDB.MDF”, 表“dbo.aspnet_成员资格”,第列 “UserId”。该语句已被删除 终止

我的FK_工作列表_aspnet_成员设置为:

  • 主表(
    aspnet\u成员资格
  • 外键表(
    作业列表
  • 对两个表使用列
    UserId(uniqueidentifier)
    ,当前仅设置2个UserId
JobList
具有自动索引主键int
JobId
。对插入和更新属性不执行任何操作,删除设置为级联

在dbml中,我还为
JobList
表设置了
UpdateCheck=UpdateCheck.Never

我不明白为什么会发生这种异常,因为我在用户登录后使用会员服务。它应该没有冲突。顺便说一句,我相信没有其他重复的功能插入项目。虽然抛出异常,但新行数据已使用正确的用户ID成功插入。每次插入项目时,它都会不断抛出此类异常

protected void LinqDataSourceDetail_Inserting(object sender, LinqDataSourceInsertEventArgs e) 
{        
    if (Page.IsValid == true)     
    {               
        JobPostDataContext db = new JobPostDataContext();

        JobList newJob = new JobList();
        newJob.JobTitle = ((TextBox)DetailsView1.FindControl("TB_JobTitle")).Text;
        newJob.Summary = ((TextBox)DetailsView1.FindControl("TB_Summary")).Text;
        newJob.Detail = ((TextBox)DetailsView1.FindControl("TB_Detail")).Text;
        newJob.CompanyName = ((TextBox)DetailsView1.FindControl("TB_CompanyName")).Text;
        newJob.CompanyEmail = ((TextBox)DetailsView1.FindControl("TB_CompanyEmail")).Text;
        String date = ((TextBox)DetailsView1.FindControl("TB_PostDate")).Text;
        newJob.PostDate = (DateTime)Convert.ToDateTime(date);
        newJob.IsTop = false;
        newJob.UserId = (Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey;

        db.JobLists.InsertOnSubmit(newJob); 
        db.SubmitChanges();          
     } 
}

这意味着
(guid)Membership.GetUser(User.Identity.Name).ProviderUserKey返回的guid不会出现在
aspnet\u Membership
表中

这可能是因为
Membership.GetUser(User.Identity.Name)
找不到当前用户。这可能是因为
User.Identity.Name
也不在
aspnet\u成员资格表中

建议的决议:

  • 输出User.Identity.Name。一种方法是
    抛出新异常(User.Identity.Name)
  • 检查该名称是否显示在成员资格表中

当您不可避免地发现它不存在时,您可以从那里继续调试。

您确定它没有将NULL插入为FK吗?如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击“代码示例”按钮(
{}
)在编辑器工具栏上很好地格式化和语法突出显示它!如果在带有
InsertOnSubmit
的行上放置断点,并检查
newJob
对象,则该
UserId
是否设置为有效的GUID?该GUID是否确实存在于aspnet_成员资格表中??