簡體   English   中英

准備SQL表創建的價值和類型處理的最佳方法

[英]Best way for value and type handling for preparing SQL Table Creation

我有一個類,它表示將在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; 
        }

}

我擔心的是,您可以傳遞任何想要的Type,但是我只需要一些特定的數據類型,例如String,int,date,float。

我如何才能改善我的代碼,使其只能通過它們? 基於使用屬性類型在sql數據庫中正確創建表的想法,是否有比使用System.Type類型更好的方法?

我想您可以對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為true,如果為false則拋出異常。

希望這會有所幫助,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM