c#ado.net无法将长字符串保存到sql数据库

c#ado.net无法将长字符串保存到sql数据库,c#,sql-server,ado.net,C#,Sql Server,Ado.net,我正在尝试以文本形式获取输入并将其保存到SQL表中, 如果字符串不太长,代码就可以正常工作,但是当您超过大约70个字符时,SaveChanges()命令无法保存数据。 SQL数据类型设置为nvarchar(max)。有什么想法吗 private void btnSave_Click(object sender, EventArgs e) { Model.TBL_USERS USR = new Model.TBL_USERS(); USR.USR_NAME = txtNAME.Te

我正在尝试以文本形式获取输入并将其保存到SQL表中, 如果字符串不太长,代码就可以正常工作,但是当您超过大约70个字符时,
SaveChanges()命令无法保存数据。
SQL数据类型设置为
nvarchar(max)
。有什么想法吗

private void btnSave_Click(object sender, EventArgs e)
{
    Model.TBL_USERS USR = new Model.TBL_USERS();
    USR.USR_NAME = txtNAME.Text;
    USR.USR_LAST = txtLAST.Text;
    USR.USR_MOBILE = txtMOBILE.Text;
    USR.USR_TEL1 = txtTEL1.Text ;
    USR.USR_ADDRESS = txtADDRESS.Text;
    USR.USR_COMPANY = txtCOMPANY.Text;
    //USR.USR_COMPANY = "=chrome..69i57.13150j0j4&sourceid=chrome&ie=UTF-8";
    DB.TBL_USERS.Add(USR);
    DB.SaveChanges();

    dataGridView1.DataSource = "";
    dataGridView1.DataSource = DB.TBL_USERS.ToList();
}
这是解决方案中的全部代码:

 public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    Model.SAMA_User_CRM_V1 DB = new Model.SAMA_User_CRM_V1();
    int IDGRID;
    private void Form1_Load(object sender, EventArgs e)
    {
        dataGridView1.DataSource = DB.TBL_USERS.ToList();

    }

    private void btnSave_Click(object sender, EventArgs e)
    {
        Model.TBL_USERS USR = new Model.TBL_USERS();
        USR.USR_NAME = txtNAME.Text;
        USR.USR_LAST = txtLAST.Text;
        USR.USR_MOBILE = txtMOBILE.Text;
        USR.USR_TEL1 = txtTEL1.Text ;
        USR.USR_ADDRESS = txtADDRESS.Text;
        USR.USR_COMPANY = txtCOMPANY.Text;
        //USR.USR_COMPANY = "=chrome..69i57.13150j0j4&sourceid=chrome&ie=UTF-8";
        DB.TBL_USERS.Add(USR);
        DB.SaveChanges();


        dataGridView1.DataSource = "";
        dataGridView1.DataSource = DB.TBL_USERS.ToList();
    }

    private void btnDELETE_Click(object sender, EventArgs e)
    {
        var qdel = DB.TBL_USERS.Where(x => x.ID == IDGRID).ToList();

        foreach (var item in qdel)
        {
            DB.TBL_USERS.Remove(item);

        }
        DB.SaveChanges();
        dataGridView1.DataSource = "";
        dataGridView1.DataSource = DB.TBL_USERS.ToList();
    }

    private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
    {
        IDGRID = (int)dataGridView1.Rows[e.RowIndex].Cells["ID"].Value;

    }
}

}

考虑到这些评论,我发现问题出在哪里:


最初,模型是用一个SQL表创建的,该表使用
nvarchar(50)
,然后将其更改为
nvarchar(500)
nvarchar(max)
模型。需要更新edmx
。。。更新模型后,所有的事情都很顺利。

在以前的版本中,字段是否有长度限制?也许你没有更新你的模型。模型设计器中字段的最大长度属性值是多少?如果是这样,数千名开发人员在15年前就会注意到。张贴一个真实的、可复制的例子。包括表shcema。我怀疑,仅仅通过创建示例,您就会发现错误,例如,写入错误的列,或者使用最多70个字符的实体,那么
USR_COMPANY
是否真的被视为blob?这就是
nvarchar(max)
的意思。这并不意味着“存储任何字符串”。它的目的是存储2GB长的字符串,而不是200-500个字符长的音符或音符descriptions@PanagiotisKanavos我使用nvarchar(max)作为测试,以查看限制是否来自SQL。。如何更改实体中70个字符的限制。。。我想我是个编程新手。