8

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

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

4

3 回答 3

7

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

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

于 2008-08-21T18:11:20.003 回答
2

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

感谢您的快速回答!

于 2008-08-21T21:14:04.153 回答
1

如果您需要知道确切的列长度,您可以求助于 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 );

}
于 2009-09-09T04:44:58.357 回答