我已经使用Linq to SQL一段时间了,我发现它非常有用且易于使用。使用我过去使用过的其他ORM工具,从数据库填充的实体对象通常具有一个属性,指示数据库中基础数据列的长度。这在数据绑定情况下非常有用,您可以在文本框中设置MaxLength属性,例如,限制用户输入的输入长度。
我找不到使用Linq to SQL获取基础数据列长度的方法。有谁知道这样做的方法?请帮助。
答案 0 :(得分:7)
使用LINQ ColumnAttribute从数据库中获取字段长度:
http://www.codeproject.com/KB/cs/LinqColumnAttributeTricks.aspx
答案 1 :(得分:2)
感谢。实际上这两个答案似乎都有效。不幸的是,他们似乎在查看代码生成完成时生成的Linq属性。虽然这似乎是正确的做法,但在我的情况下,我们销售软件产品,有时候客户会扩展一些列长度来容纳他们的数据。因此,使用此技术报告的字段长度可能并不总是反映基础数据列的真实长度。好吧,不是Linq对SQL的错,是吗? :)
感谢您的快速解答!
答案 2 :(得分: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 );
}