動態生成實體類

2022-01-11 15:21:10 字數 2663 閱讀 2461

在開發中可能會遇到這幾種情況

1、ef或linq查詢出來的匿名物件在其它地方呼叫不方便,又懶的手動建實體類

2、通過datatable反射實體需要先建乙個類 ,頭痛

3、通過sql語句返回的實體也需要先建乙個類 ,頭痛

4、如果通過**生成器要寫模版,需要安裝或者不想生成一堆不用的類  

為了解決上面的不便之處,我封裝了乙個實體生成類,可以扔到程式裡面任意呼叫

封裝類:

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.data;

using

system.data.sqlclient;

using

system.text.regularexpressions;

namespace

syntacticsugar

if (!type.namespace.contains("

system.collections.generic"))

", typename, r.name, "

", nullable);

}} @"

public class

}}", classname, propertiesvalue);  

return

reval.tostring();

}   

//////

根據datatable獲取實體類的字串

//////

//////

public

static

string datatabletoclass(datatable dt, string

classname)

", typename, r.columnname, "");

}@"public class

}}", classname, propertiesvalue);  

return

reval.tostring();

}//////

根據sql語句獲取實體類的字串

//////

sql語句

///生成的類名

///服務名

///資料庫名稱

///賬號

///密碼

///        public

static

string sqltoclass(string sql, string classname, string server, string database, string uid, string

pwd)

;uid=;pwd=;database=

", server, database, uid, pwd)))

}//////

根據sql語句獲取實體類的字串

//////

sql語句

///生成的類名

///webconfig的connectionstrings name

///        public

static

string sqltoclass(string sql, string classname, string

connname)

}//////

匹配型別

//////

///        private

static

string

changetype(type type)

return

typename;}}

}

呼叫如下:

//通過匿名物件生成實體類

var dynamicobj = new ;

//注意:只能是單個實體不能傳入 list,集合需要 list[0]

string classcode = classgenerating.dynamictoclass(dynamicobj, "classdynamic");

//通過datatable生成實體類

datatable dt = new datatable();

dt.columns.add("id", typeof(int));

dt.columns.add("name");

classcode = classgenerating.datatabletoclass(dt, "classtatabale");

//通過sql語句生成實體類

classcode = classgenerating.sqltoclass("select * from note", "note", "127.0.0.1", "mywork", "sa", "sasa");

classcode = classgenerating.sqltoclass("select * from dbo.accessoriesdetail", "accessoriesdetail", "nfdentities");//通過 config connstring名稱

然後在除錯狀態把你需要的結果ctrl+c 然後去新建乙個類ctrl+v

實體類的動態生成(一)

在應用開發中,通常都會涉及各種 pojo poco 實體類 do,dto,bo,vo 的編寫,有時這些實體類還需要實現inotifypropertychanged介面以支援屬性變更通知,一般我們都會手寫這些 或者通過工具根據資料庫表定義抑或別的什麼模板 對映檔案之類的來生成它們。但是,在業務實現中往...

EfCore DbFirst生成實體類

本文主要介紹dbfirst情況下,使用efcore命令生成實體類。一 安裝工具 dotnet ef dotnet ef 可以安裝為全域性或本地工具,全域性命令如下 安裝 dotnet tool install global dotnet ef 更新dotnet tool update global ...

json快速生成實體類

justcode 2016 11 04 16 19 1.利用這個工具,不知是那位寫的,真的是簡單實用,對於一些複雜的json有這樣的工具真的是如魚得水一樣.public list 城市 城市 public class 城市 public string 省 public list 市 市 public...