Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
A DataContext wrapper for LINQ to SQL model.
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;
}
}
}
@Lechus

This comment has been minimized.

Copy link

Lechus commented Mar 7, 2017

@bradoyler: will this work with stored procedures?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.