代码之家  ›  专栏  ›  技术社区  ›  Pete Michaud

亚音速3柱的最大长度

  •  1
  • Pete Michaud  · 技术社区  · 16 年前

    我有一种笨拙的方法来获取数据库中某个列的最大长度,但这太糟糕了,似乎是错误的:

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

    我真的需要实例化一个对象并挖掘它吗?我甚至必须明确地将提供者传递给它。

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

    4 回复  |  直到 14 年前
        1
  •  1
  •   Adam Cooper    16 年前

    是的,这看起来确实有点笨拙,但我看不到任何更笨拙的方法来获取maxlength值。要获取当前提供程序,只需使用subsonic.dataProviders.ProviderFactory类的getProvider方法。因此,您的示例如下所示:

    var length = new DataNS.WidgetTable(ProviderFactory.GetProvider()).description.MaxLength;
    
        2
  •  1
  •   user1151    16 年前

    如果使用ActiveRecord,则对象的[列名称]列属性包含所有这些信息。因此,如果实例化了post对象(如“post”),则可以使用post.titleColumn.maxLength。

    如果你使用的是亚音速3,你可以直接进入structs.tt并旋转你需要的任何东西。

        3
  •  0
  •   djuth    16 年前

    我用ActiveRecord在亚音速3中做了这样的工作,它工作:

    new AccountsTable(null).ContactEmail.MaxLength
    

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

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

    但不确定在accountstable构造函数中传递null是否会在某个时刻引发问题——是否有人知道这是不可取的?我试图找到另一种方法,尽可能简洁,但这就是我最终的结局。

        4
  •  0
  •   GDP Danny    14 年前

    在亚音速2.2中,我做以下工作。这不适用于3?

    var length = Template.Schema.GetColumn("Name").MaxLength;
    
    推荐文章