在C#中使用Linq to Sql,有什么办法可以自动截断太长的数据吗?

ryb*_*ome 2 c# linq-to-sql

所以,我将数据从一个数据库导入另一个数据库.大概有5000条记录(所以没有什么可笑的,但不足以让人眼前一亮).是否有一种简单的方法可以自动截断太长的数据 - 特别是varchar字段?我不希望截断是沉默的,因为太长的字段可能需要注意,但如果一个2个字符太长的名称在插入时不会失败并抛出一个完全非特定的异常,那将是非常好的.

我想要实现的解决方案是截断数据,插入数据并记录它.有没有其他人做过类似的事情?

Gab*_*abe 6

Linq2Sql将生成如下属性:

    [Column(Storage="_Name", DbType="NVarChar(50) NOT NULL")]
    public string Name
    {
        get
        {
            return this._Name;
        }
        set
        {
            if ((this._Name != value))
            {
                this.OnNameChanging(value);
                this.SendPropertyChanging();
                this._Name = value;
                this.SendPropertyChanged("Name");
                this.OnNameChanged();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

看看它如何调用一个名为的函数OnNameChanged?只需创建一个具有该名称的函数来执行截断和日志记录:

void OnNameChanged()
{
    if (Name.Length > 50)
    {
        Name = Name.Substring(0, 50);
        LogSomehow("Name truncated");
    }
}
Run Code Online (Sandbox Code Playgroud)