Linq To SQL數(shù)據(jù)概括
學(xué)習(xí)Linq時(shí),經(jīng)常會(huì)遇到Linq To SQL數(shù)據(jù)問(wèn)題,這里將介紹Linq To SQL數(shù)據(jù)問(wèn)題的解決方法。
很久之前,在我剛學(xué)數(shù)據(jù)庫(kù)編程的時(shí)候,就希望直接建一個(gè)數(shù)據(jù)庫(kù)通用的操作類(lèi), 即寫(xiě) Insert(類(lèi)實(shí)例), 那么剩下的工作就交給底層代碼來(lái)實(shí)現(xiàn)如何Insert。 現(xiàn)在接觸了Linq, 感覺(jué)離這個(gè)夢(mèng)想的實(shí)現(xiàn)已經(jīng)不遠(yuǎn)了。
下面就分享一下我的源代碼,很簡(jiǎn)單,估計(jì)剛學(xué)Linq的人也能看懂。
1. 建一個(gè)project 命名為DLinq ,添加一個(gè)Linq To SQL數(shù)據(jù)源,這里以經(jīng)典的Northwind數(shù)據(jù)庫(kù)為例,命名為NWDB.dbml 。
2. 建另一個(gè)Project 為DAL層 ,添加一個(gè)Table工廠(chǎng), 這樣我們就可以通過(guò)實(shí)體來(lái)獲得Table
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace DAL
- {
- public staticclass TableFactory
- {
- public static System.Data.Linq.Table<T> CreateTable<T>() where T : class
- {
- return Database.NWDB.GetTable<T>();
- }
- }
- }
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace DAL
- {
- publicstatic class Database
- {
- private static DLinq.NWDBDataContext _NWDB = null;
- public static DLinq.NWDBDataContext NWDB
- {
- get
- {
- if (_NWDB == null)
- _NWDB = new DLinq.NWDBDataContext();
- return _NWDB;
- }
- }
- }
- }
3. 借助Linq的特性,現(xiàn)在就可以寫(xiě)通用的數(shù)據(jù)庫(kù)操作類(lèi)了
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace DAL
- {
- public class Utility
- {
- public static void Insert<T>(T TEntity) where T : class
- {
- var table = TableFactory.CreateTable<T>();
- table.InsertOnSubmit(TEntity);
- }
- public static IEnumerable<T> Where<T>(Func<T, bool> predicate) where T : class
- {
- var table = TableFactory.CreateTable<T>();
- return table.Where(predicate).AsEnumerable();
- }
- public static void SubmitChanges()
- {
- Database.NWDB.SubmitChanges();
- }
- }
- }
【編輯推薦】