2009-10-12 81 views
1

我有一个笨拙的方式来获得在数据库中的列的最大长度,但它是如此糟糕,它似乎是错误的:亚音速3的MaxLength为

var length = new DataNS.WidgetTable(provider).description.MaxLength 

我真的必须初始化一些对象,去挖掘它?我甚至必须明确地将提供者传递给它。

如果确实是这样做的正确方法,那么最好是让当前的提供者传递给它?如果不是,最好的方法是什么?

回答

1

是的这看起来有点笨拙,但我看不出任何笨拙的方式获得MaxLength值。要获得当前的提供者,您可以使用SubSonic.DataProviders.ProviderFactory类的GetProvider方法。所以你的例子看起来像这样:

var length = new DataNS.WidgetTable(ProviderFactory.GetProvider()).description.MaxLength; 
0

在亚音速2.2我做了以下。这是不是在3?

var length = Template.Schema.GetColumn("Name").MaxLength; 
1

如果您使用ActiveRecord那么你的对象有具有所有这些信息[COLUMN_NAME]列属性。所以如果你有一个Post对象实例化(比如“post”),你可以使用post.TitleColumn.MaxLength。

如果您使用SubSonic 3,您可以前往Structs.tt并旋转任何您需要的东西。

0

我有这样的事情来使用ActiveRecord亚音速3工作,它的工作原理:

new AccountsTable(null).ContactEmail.MaxLength 

我使用它在ASP.NET MVC视图:

<%= Html.TextBoxFor(model => model.ContactEmail, 
new { maxlength = new AccountsTable(null).ContactEmail.MaxLength })%> 

,但不知道如果在AccountsTable构造函数中传递null将会在某些时候触发事件 - 有谁知道这是否不可取?我试图找到另一种方式,尽可能简洁,但这是我结束的地方。