C# 使用Asp.net的聊天应用程序出现数据库错误

C# 使用Asp.net的聊天应用程序出现数据库错误,c#,asp.net,sql,ajax,linq-to-sql,C#,Asp.net,Sql,Ajax,Linq To Sql,我正在ASP.NET中使用AJAX、LINQ to SQL和一些用于身份验证的安全功能制作聊天应用程序。聊天将根据特定的组进行。在我尝试登录项目中的聊天页面default.aspx后,我收到一个错误, 错误是: INSERT语句与外键约束FK_tbmsg_tbusr2冲突。冲突发生在数据库测试表dbo.tbusr的“usrcod”列中。 声明已终止 注:tbmsg是用于存储消息数据的表,tbusr是用于存储用户数据的表。 Default.aspx的后端代码为: using System; usi

我正在ASP.NET中使用AJAX、LINQ to SQL和一些用于身份验证的安全功能制作聊天应用程序。聊天将根据特定的组进行。在我尝试登录项目中的聊天页面default.aspx后,我收到一个错误, 错误是:

INSERT语句与外键约束FK_tbmsg_tbusr2冲突。冲突发生在数据库测试表dbo.tbusr的“usrcod”列中。 声明已终止

注:tbmsg是用于存储消息数据的表,tbusr是用于存储用户数据的表。 Default.aspx的后端代码为:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.Text;

public partial class _Default : System.Web.UI.Page
{
    chatDataContext obj = new chatDataContext();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack == false)
        {
            Label1.Text = "Welcome:" + Session["usrnam"].ToString();
            Insert_Msg("Just Login:");
            GetLoggedUser();
            Get_Msg();
        }
    }
    private void Insert_Msg(String m)
    {
        tbmsg k = new tbmsg { msgdsc = m, msgdat = DateTime.Now, msgfrmusrcod = Convert.ToInt32(Session["usrcod"]), msgtousrcod = null, msggrpcod = Convert.ToInt32(Request.QueryString["grpcod"]) };
        obj.tbmsgs.InsertOnSubmit(k);
        obj.SubmitChanges();
    }
    private void Get_Msg()
    {
        var q = from p in obj.tbmsgs
                where p.msggrpcod == Convert.ToInt32(Request.QueryString["grpcod"])
                select p;
        StringBuilder sb = new StringBuilder();
        foreach (var t in q)
        {
            sb.Append(t.msgdsc + ":" + t.msgdat.ToString() + ":" + t.tbusr.usrnam + "<br/>");
        }
        ltmsg.Text = sb.ToString();


    }
    private void GetLoggedUser()
    {
        var q = (from p in obj.tblogusrs where p.logusrusrcod == Convert.ToInt32(Session["usrcod"]) select p).SingleOrDefault();
        if (q == null)
        {
            tblogusr x = new tblogusr { logusrusrcod = Convert.ToInt32(Session["usrcod"]), logusrgrpcod = Convert.ToInt32(Request.QueryString["grpcod"]) };
            obj.tblogusrs.InsertOnSubmit(x);
            obj.SubmitChanges();
        }
        StringBuilder sb = new StringBuilder();
        var q1 = from p in obj.tblogusrs where p.logusrgrpcod == Convert.ToInt32(Request.QueryString["grpcod"]) select p;
        foreach (var t in q1)
        {
            sb.Append(t.tbusr.usrnam + "<br/>");
        }
        ltuser.Text = sb.ToString();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (TextBox1.Text.Length > 0)
        {
            Insert_Msg(TextBox1.Text);
            TextBox1.Text = String.Empty;
            TextBox1.Focus();
        }
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        var q = (from p in obj.tblogusrs where p.logusrusrcod == Convert.ToInt32(Session["usrcod"]) select p).SingleOrDefault();
        if (q != null)
        {
            obj.tblogusrs.DeleteOnSubmit(q);
            obj.SubmitChanges();
        }
        Insert_Msg("Just Logout:");
        FormsAuthentication.SignOut();
        Response.Redirect("login.aspx");
    }
    protected void Timer1_Tick(object sender, EventArgs e)
    {
        Get_Msg();
        GetLoggedUser();
    }
}
tbmsg表格说明:

msgcod     int   primary key (auto increment)

msgdsc     varchar(100)

msgdat     datetime

msgfrmusrcod   int (foreign key with usrcod of tbusr)

msgtousrcod    int (foreign key with usrcod of tbusr)

msggrpcod      int (foreign key with grpcod of tbgrp)
注意:tbgrp是另一个用于存储组数据的表

usrcod     int   primary key (auto increment)

usrnam     varchar(50)

usrpwd     varchar(50)
msgcod     int   primary key (auto increment)

msgdsc     varchar(100)

msgdat     datetime

msgfrmusrcod   int (foreign key with usrcod of tbusr)

msgtousrcod    int (foreign key with usrcod of tbusr)

msggrpcod      int (foreign key with grpcod of tbgrp)