C# 验证保存到数据库时数据字段是否过大?

C# 验证保存到数据库时数据字段是否过大?,c#,C#,我有一个作为windows服务运行的应用程序,它读取文本数据文件,然后将文件内容映射到数据库。该应用程序使用批提交,并且周期性地将数据大于数据库字段 在尝试将数据字段保存到数据库之前,验证数据字段是否过大的最佳方法是什么?要进行验证,可以使用datatable读取数据库字段的最大长度 (VB.NET代码) 也许这个链接会有帮助 如果您愿意使用,您可以这样做 public class Customer { [StringLength(5)] public string Name {

我有一个作为windows服务运行的应用程序,它读取文本数据文件,然后将文件内容映射到数据库。该应用程序使用批提交,并且周期性地将数据大于数据库字段


在尝试将数据字段保存到数据库之前,验证数据字段是否过大的最佳方法是什么?

要进行验证,可以使用datatable读取数据库字段的最大长度

(VB.NET代码)

也许这个链接会有帮助

如果您愿意使用,您可以这样做

public class Customer
{
    [StringLength(5)]
    public string Name { get; set; }

    [StringLength(20)]
    public string Phone { get; set; }

    [StringLength(30)]
    public string Email { get; set; }

    [StringLength(30)]
    public string Address { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        Customer c = new Customer 
        {
            Name = "FooBarX",
            Phone = "555-5555-33 ext 234",
            Email = "foobar@foobar.com",
            Address = "1334 foobar ave, foobar CA"
        };

        var ctx = new ValidationContext(c, null, null);
        Validator.ValidateObject(c, ctx,true);

        Console.Read();
    }
}
在这种情况下,将引发异常,因为名称字段太大,这是由
StringLength
属性强制执行的

您还可以使用,它将返回错误列表,而不是引发异常


验证框架非常强大。可以对字符串使用正则表达式验证。数字字段的范围验证,甚至自定义验证。

是否要截断数据以使其适合,忽略这些行,忽略整个文件,或者什么?在应用程序启动时,从DB读取字段的大小定义,如此处或此处还有用于验证数字属性的RangeAttribute
public class Customer
{
    [StringLength(5)]
    public string Name { get; set; }

    [StringLength(20)]
    public string Phone { get; set; }

    [StringLength(30)]
    public string Email { get; set; }

    [StringLength(30)]
    public string Address { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        Customer c = new Customer 
        {
            Name = "FooBarX",
            Phone = "555-5555-33 ext 234",
            Email = "foobar@foobar.com",
            Address = "1334 foobar ave, foobar CA"
        };

        var ctx = new ValidationContext(c, null, null);
        Validator.ValidateObject(c, ctx,true);

        Console.Read();
    }
}