Linq To SQL數(shù)據(jù)概括
學習Linq時,經(jīng)常會遇到Linq To SQL數(shù)據(jù)問題,這里將介紹Linq To SQL數(shù)據(jù)問題的解決方法。
很久之前,在我剛學數(shù)據(jù)庫編程的時候,就希望直接建一個數(shù)據(jù)庫通用的操作類, 即寫 Insert(類實例), 那么剩下的工作就交給底層代碼來實現(xiàn)如何Insert。 現(xiàn)在接觸了Linq, 感覺離這個夢想的實現(xiàn)已經(jīng)不遠了。
下面就分享一下我的源代碼,很簡單,估計剛學Linq的人也能看懂。
1. 建一個project 命名為DLinq ,添加一個Linq To SQL數(shù)據(jù)源,這里以經(jīng)典的Northwind數(shù)據(jù)庫為例,命名為NWDB.dbml 。
2. 建另一個Project 為DAL層 ,添加一個Table工廠, 這樣我們就可以通過實體來獲得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)在就可以寫通用的數(shù)據(jù)庫操作類了
- 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();
- }
- }
- }
【編輯推薦】