Created
November 2, 2012 13:01
-
-
Save bradoyler/4001262 to your computer and use it in GitHub Desktop.
A DataContext wrapper for LINQ to SQL model.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Web; | |
using System.Data.Common; | |
using System.Data.Linq; | |
namespace MyApp.Models.DataContextWrapper | |
{ | |
public interface IDataContextWrapper | |
{ | |
void DeleteOnSubmit<T>(T entity) where T : class; | |
void DeleteAllOnSubmit<T>(IEnumerable<T> entities) where T : class; | |
void InsertOnSubmit<T>(T entity) where T : class; | |
void InsertAllOnSubmit<T>(IEnumerable<T> entities) where T : class; | |
void SubmitChanges(); | |
IQueryable<T> Table<T>() where T : class; | |
IQueryable<T> Query<T>() where T : class; | |
IEnumerable<TResult> ExecuteQuery<TResult>(string query, params object[] parameters); | |
DbConnection Connection(); | |
} | |
public abstract class DataContextWrapper : IDataContextWrapper | |
{ | |
protected DataContext Db; | |
public DataContextWrapper(DataContext context) | |
{ | |
this.Db = context; | |
} | |
public DataContextWrapper(DataContext context, DataContextConfig conn) | |
{ | |
context.Connection.ConnectionString=conn.ConnectionString; | |
this.Db = context; | |
} | |
public IQueryable<T> Table<T>() where T : class | |
{ | |
return Db.GetTable<T>().AsQueryable(); | |
} | |
public IQueryable<T> Query<T>() where T : class | |
{ | |
return Db.GetTable<T>().AsQueryable(); | |
} | |
public void DeleteOnSubmit<T>(T entity) where T : class | |
{ | |
Db.GetTable<T>().DeleteOnSubmit(entity); | |
} | |
public void DeleteAllOnSubmit<T>(IEnumerable<T> entities) where T : class | |
{ | |
Db.GetTable<T>().DeleteAllOnSubmit(entities); | |
} | |
public void InsertOnSubmit<T>(T entity) where T : class | |
{ | |
Db.GetTable<T>().InsertOnSubmit(entity); | |
} | |
public void InsertAllOnSubmit<T>(IEnumerable<T> entities) where T : class | |
{ | |
Db.GetTable<T>().InsertAllOnSubmit(entities); | |
} | |
public void SubmitChanges() | |
{ | |
try | |
{ | |
Db.SubmitChanges(); | |
} | |
catch (Exception ex) | |
{ | |
new ErrorRepository().addError(ex); | |
} | |
} | |
public IEnumerable<TResult> ExecuteQuery<TResult>(string query, params object[] parameters) | |
{ | |
return Db.ExecuteQuery<TResult>(query, parameters); | |
} | |
public DbConnection Connection() | |
{ | |
return Db.Connection; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@bradoyler: will this work with stored procedures?