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

我找不到使用 Linq to SQL 来获取基础数据列的长度的方法。有谁知道有什么方法可以做到这一点?请帮助。

有帮助吗?

解决方案

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

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

其他提示

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

}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top