准备SQL表创建的最佳值和类型处理方法

时间:2013-03-06 08:45:34

标签: c# asp.net asp.net-mvc

我有一个代表动态表的类,它将在sql数据库中创建。

public class DynamicTable
{
      public List<DynamicField> fieldNames { get; set; }
}

DynamicField表示一对字段名称及其dataType:

public class DynamicField
    {
        public Type type {get;set;}
        public String fieldName {get;set;}

 public DynamicField(String fieldName, Type datatype)
        {
           this.fieldName = fieldName;
           this.type = datatype; 
        }

}

我担心的是,你可以传递你想要的任何类型,但我只需要一些特定的数据类型,如String,int,date,float。

我怎样才能改进我的代码,只能传递它们? 基于使用属性类型在我的sql数据库中正确创建表的想法,有没有比使用System.Type类型更好的方法?

1 个答案:

答案 0 :(得分:0)

我猜你可以用Generic加一个约束,如下所示。但我也猜测它在你的动态场景中会非常不可用(并且它不会接受可以为空的类型)

public class DynamicField
{
    public String fieldName { get; set; }
    private Type _type;

    public DynamicField SetFieldType<T>() where T:struct
    {
        this._type = typeof(T);
        return this;
    }

    public Type GetFieldType()
    {
        return this._type;
    }

    public DynamicField(String fieldName)
    {
        this.fieldName = fieldName;
    }
}

然后您可以编写如下内容:

   var t = new DynamicTable();
   t.Add(new DynamicField("ColumnA").SetFieldType<String>());

也许您可以在type设置器中检查value.IsValueType是否为真,如果为false则抛出异常。

希望这会有所帮助,