我正在尝试向桌面添加电子邮件,但是错误的是电子邮件中的值是“prashhanth@oberonit.com”。我没有看到电子邮件中有任何错误。我添加了其他电子邮件,但不是这个。
列RemovedEmail是varchar(50),null
“字符串或二进制数据将被截断。
该语句已被终止。”
var constultantUser = intensifyDb.ConsultantUsers.FirstOrDefault(x => x.Email == email);
// Delete the item
if (constultantUser != null)
{
intensifyDb.DeleteObject(constultantUser);// Save changes
intensifyDb.SaveChanges();
}
if (!intensifyDb.RemovedEmails.Any(x => x.RemovedEmails == email))
{
RemovedEmail consultant = new RemovedEmail
{
RemovedEmails = email
};
intensifyDb.AddToRemovedEmails(consultant);
intensifyDb.SaveChanges(); // Exception throwing here.
}
作为@Bradley请求
完整代码
protected void btnAdd_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtEmails.Text))
{
string txt = txtEmails.Text;
string[] lst = txt.Split(new Char[] { '\n', '\r' },
StringSplitOptions.RemoveEmptyEntries);
string email = string.Empty;
var removedEmail = string.Empty;
using (SqlConnection connection = new SqlConnection(connectionString))
{
var foundEmail = string.Empty;
foreach (string emailStr in lst)
{
email = LastCharFromEmailAddress(emailStr).Replace("\r\n", string.Empty);
var intensifyDb = new IntensifyEntities();
var constultantUser = intensifyDb.ConsultantUsers.FirstOrDefault(x => x.Email == email);
// Delete the item
if (constultantUser != null)
{
intensifyDb.DeleteObject(constultantUser);// Save changes
intensifyDb.SaveChanges();
}
if (!intensifyDb.RemovedEmails.Any(x => x.RemovedEmails == email))
{
RemovedEmail consultant = new RemovedEmail
{
RemovedEmails = email
};
intensifyDb.AddToRemovedEmails(consultant);
intensifyDb.SaveChanges();
}
}
connection.Close();
}
}
}
答案 0 :(得分:5)
此异常通常意味着您的数据库字段没有足够的长度
我建议在调试器中查看此代码,并检查字符串的实际长度是多少。
编辑:
我认为它的额外空格会将sting复制到编辑器并检查并尝试使用.Trim()
email = email.Trim();
如果修剪不起作用,可能是某些不可见的Unicode字符
尝试在代码中添加:
var debugCheck = string.Join("",
email.Select(c=> String.Format("{0:X2}", Convert.ToInt32(c))))
并将debugCheck的值发送给我,以便我查看。
(这会将电子邮件值转换为十六进制字符串,这将有助于识别可能看起来像空格的额外字符,但它们不是)
更新:
所以你实际上有这个字符串(十六进制)707261736868616E7468406F6265726F6E69742E636F6D200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B
200B表示Unicode字符' ZERO WIDTH SPACE' (U + 200B)您可以使用
.Replace("\u200B", "");
删除所有unicode空格字符的更通用代码:
Regex.Replace(email, @"^[\s,]+|[\s,]+$", "")