本人最近開發專案 所用的開發工具為vs2015 ,以前開發**都是用的微軟的實體資料模型,並且資料庫為sqlserver,這次也不例外,唯一不同的是這次需要連線mysql資料庫,本想這側也用實體資料模型,但是發現安裝了mysqlserver,mysql for visual studio connector/net 之後依然沒有辦法使用實體資料模型,卡在實體資料模型嚮導
您引用了最新版本實體框架,但是找不到進行資料連線所需要的與此版本相容的實體框架資料庫提供程式, ****~~~~~~鼓搗了半天竟然沒有成功(更新到最新版本的mysqlserver,mysql for visual studio connector/net),因此確認到目前為止2023年7月29日,mysql還沒有弄出來與實體框架6.x相匹配的資料庫提供程式。退到實體框架5竟然成功了,那也不行,因為本**其他位置已經使用了實體框架6來連線sqlserver。
沒辦法只有使用資料集來連線資料庫。但是資料集超不好用,改動一下就發現建立新的designer.cs 並對**內容產生二義性。那也沒法,如果不用資料集那麼就只能親自操作sql語句了,麻煩的要命。
最後形成了一套新的,可以在表之間「導航」(類似實體資料模型)的方法 現記錄一下
比如有兩個表 乙個是area,乙個是industry,用資料集生成了相關的xsd檔案,並且自建了mysql類 areatableadapte類和industrytableadapter類,並且mysql在命名空間models裡,而那兩個adapter類在models.mysqltableadapters命名空間裡
//如果需要建立關係則要記住兩個表關係的名稱
models.mysql dataset = new models.mysql();//獲得乙個例項
new models.mysqltableadapters
.areatableadapter().fill(dataset.area);//填充例項
new models.mysqltableadapters
.industrytableadapter().fill(dataset.industry);//填充例項
//使用資料表
var rrr = dataset.fhk_cooperation_industry[0].getchildrows("industry_industry");
var rrrd = dataset.fhk_cooperation_industry.where(m=>m.fid==0).first().getchildrows("industry_industry");
上例表明如需要進行表間導航,則需要先填充各表,也就是資料先要載入到內容,然後才可以利用表之間關係進行導航,這和實體資料模型不同,實體資料模型是按需來獲取資料,不用先載入進來,這一點實體資料模型比較好。除了getchildrows外,還存在getparentrow和getparentrows 同樣可以在子向父導航。
另外因為實體資料模型是視覺化的方式編寫。與sqlserver嚴密繼承。但是與其他資料庫並不完全整合,瑕疵大大的。這裡發現如果想利用mysql的 limit 在視覺化介面裡 進行分頁是不可能的。會出現語法錯誤並且終止生成相應**。所以要自己親自來整合了 **如下
///
/// 為資料集提供補充
//////
為adapter型別,比如models.mysqltableadapters.my_storetableadapter
///需要填充的資料集
///mysql語句或sql語句
///設定在web.config裡的連線字串的名字
///填充前是否清空
//////
返回成功填充多少條
public
static
int myfill(system.data.datatable datatable, string cmdtext, string connectstring_in_webcofig,bool clearbeforefill) where t : system.componentmodel.component
int returnvalue = a.adapter.fill(datatable);
return returnvalue;
}
呼叫方法為
var result = models.mysqlextend.myfill(dataset.datatable, "select `id`, name` from `tableinmysql` limit 1,2", "connectionstring", true);
這裡引入的事datatable而不是dataset是因為dataset為引用型別,所以用不著擔心dataset裡針對datatable的引用會失效。
記住 dataset裡有很多datatable而我們可以利用dataset內的關係來導航資料,前提是dataset已經填充過資料,並且有表間關係存在
使用方法
getchildrows
getparentrow
getparentrows
XML和關係資料 從XSD架構建立資料集對映
如何從 xsd 架構建立資料集對映 此示例闡釋如何從提供的 xml 架構定義語言 xsd 架構建立資料集對映。通常情況下,架構是元資料,或是關於資料的資料,但 xsd 架構還包括資料型別之間的關係。從乙個架構中,可以建立表和列的關係結構以儲存符合所提供的架構的資料。這就是架構的資料集關係對映。vb ...
關於車的資料集
cityscapes dataset專注於對城市街景的語義理解,提供無人駕駛環境下的影象分割資料集,它包含50個城市不同場景 不同背景 不同季節的街景,提供5000張精細標註的影象 20000張粗略標註的影象 30類標註物體。kitti資料集是目前國際上最大的自動駕駛場景下的計算機視覺演算法評測資料...
mysql資料庫續論
多表鏈結查詢 員工表emp 部門表dept 部門表 id dname 部門名稱 loc 部門所在地 員工表 id deptid 部門id ename 姓名 salary 工資 笛卡爾積 兩張表的記錄的乘積 查詢條件不準確 select from emp,dept where emp.deptid d...