Linq to SQL-基础列长度

时间:2020-03-05 18:41:41  来源:igfitidea点击:

我已经使用Linq to SQL已有一段时间了,我发现它非常有用并且易于使用。使用我过去使用的其他ORM工具,从数据库填充的实体对象通常具有指示数据库中基础数据列长度的属性。这在数据绑定情况下很有用,在这种情况下,我们可以在文本框上设置MaxLength属性,例如,限制用户输入的输入长度。

我找不到使用Linq to SQL来获取基础数据列的长度的方法。有人知道这样做的方法吗?请帮忙。

解决方案

回答

使用LINQ ColumnAttribute从数据库中获取字段长度:

http://www.codeproject.com/KB/cs/LinqColumnAttributeTricks.aspx

回答

谢谢。实际上,这两个答案似乎都有效。不幸的是,他们似乎在看代码生成完成时生成的Linq属性。尽管这似乎是正确的做法,但在我的情况下,我们销售软件产品,有时客户会扩展某些列的长度以容纳其数据。因此,使用此技术报告的字段长度可能并不总是反映基础数据列的真实长度。嗯,不是Linq对SQL的错,对吗? :)

感谢快速解答!

回答

如果我们需要知道确切的列长,则可以使用System.Data类本身。有点像这样:

var context = new DataContextFromSomewhere();
var connection = context.Connection;
var command = connection.CreateCommand( "SELECT TOP 1 * FROM TableImInterestedIn" );
var reader = command.ExecuteReader();
var table = reader.GetSchemaTable();

foreach( var column in table.Columns )
{
    Console.WriteLine( "Length: {0}", column.MaxLength );

}