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

本文关键字:类型 处理 最佳 方式 用于 SQL 创建 | 更新日期: 2023-09-27 18:02:24

我有一个类,它代表一个动态表,这将在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更好的方法。型类型?

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

我猜您可以像下面这样对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 setter中检查value.IsValueType是否为真,如果为假则抛出异常。

希望这对你有帮助,