Linq to DB 操作类

// ==============================================================================
// Created by Bndy at 2010/3/8 9:13:35
// Copyright (c) 2010 Bndy, All rights reserved.
// Welcome to my site http://www.bndy.net
//
// * * * * * * * * * * * * * * * *
// * Q Q : 8 1 7 9 5 7 0 5 *
// * M S N : bndy533@msn.com *
// * Email : bndy533@163.com *
// * * * * * * * * * * * * * * * *
//
// ------------------------------------------------------------------------------
// Linq to DB 操作类
// ==============================================================================

using System;
using System.Linq;
using System.Data.Linq;
using System.Collections.Generic;

namespace Net.Bndy.Data
{
public class Linq2Db
{
static System.Data.Linq.DataContext _dc = null;

#region 构造函数开始
public Linq2Db(System.Data.IDbConnection connection)
{
_dc
= new System.Data.Linq.DataContext(connection);
}
#endregion 构造函数结束

public System.Collections.Generic.IEnumerable<TEntity> Query<TEntity>(Func<TEntity, bool> predicate) where TEntity : class
{
return GetTable<TEntity>().Where<TEntity>(predicate).AsEnumerable();
}

public System.Data.Linq.Table<TEntity> GetTable<TEntity>() where TEntity : class
{
return _dc.GetTable<TEntity>();
}

public void SubmitChanges()
{
try
{
_dc.SubmitChanges();
}
catch
{
foreach (System.Data.Linq.ObjectChangeConflict occ in _dc.ChangeConflicts)
{
occ.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues);
occ.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues);
occ.Resolve(System.Data.Linq.RefreshMode.KeepChanges);
}
_dc.SubmitChanges();
}

}

#region 封装Table方法开始
public void Attach<TEntity>(TEntity entity) where TEntity : class
{
GetTable
<TEntity>().Attach(entity);
}

public void Attach<TEntity>(TEntity entity, bool asModified) where TEntity : class
{
GetTable
<TEntity>().Attach(entity, asModified);
}

public void Attach<TEntity>(TEntity entity, TEntity original) where TEntity : class
{
GetTable
<TEntity>().Attach(entity, original);
}

public void AttachAll<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : class
{
GetTable
<TSubEntity>().AttachAll<TSubEntity>(entities);
}

public void AttachAll<TSubEntity>(IEnumerable<TSubEntity> entities, bool asModified) where TSubEntity : class
{
GetTable
<TSubEntity>().AttachAll<TSubEntity>(entities, asModified);
}

public void DeleteAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : class
{
GetTable
<TSubEntity>().DeleteAllOnSubmit<TSubEntity>(entities);
}

public void DeleteOnSubmit<TEntity>(TEntity entity) where TEntity : class
{
GetTable
<TEntity>().DeleteOnSubmit(entity);
}

public IEnumerator<TEntity> GetEnumerator<TEntity>() where TEntity : class
{
return GetTable<TEntity>().AsEnumerable<TEntity>().GetEnumerator();
}

public System.Data.Linq.ModifiedMemberInfo[] GetModifiedMembers<TEntity>(TEntity entity) where TEntity : class
{
return GetTable<TEntity>().GetModifiedMembers(entity);
}

public System.ComponentModel.IBindingList GetNewBindingList<TEntity>() where TEntity : class
{
return GetTable<TEntity>().GetNewBindingList();
}

public TEntity GetOriginalEntityState<TEntity>(TEntity entity) where TEntity : class
{
return GetTable<TEntity>().GetOriginalEntityState(entity);
}

public void InsertAllOnSubmit<TEntity>(IEnumerable<TEntity> entities) where TEntity : class
{
GetTable
<TEntity>().InsertAllOnSubmit<TEntity>(entities);
}

public void InsertOnSubmit<TEntity>(TEntity entity) where TEntity : class
{
GetTable
<TEntity>().InsertOnSubmit(entity);
}

public override string ToString()
{
return "Linq2Db Ojbect!";
}
#endregion 封装Table方法结束
}

public class Linq2Dt<TEntity> where TEntity : class
{
static System.Data.Linq.DataContext _dc = null;

#region 构造函数开始
public Linq2Dt(System.Data.IDbConnection connection)
{
_dc
= new System.Data.Linq.DataContext(connection);
}
#endregion 构造函数结束

public System.Collections.Generic.IEnumerable<TEntity> Query(Func<TEntity, bool> predicate)
{
return _dc.GetTable<TEntity>().AsEnumerable();
}

public System.Data.Linq.Table<TEntity> GetTable()
{
return _dc.GetTable<TEntity>();
}

public void SubmitChanges()
{
try
{
_dc.SubmitChanges();
}
catch
{
foreach (System.Data.Linq.ObjectChangeConflict occ in _dc.ChangeConflicts)
{
occ.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues);
occ.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues);
occ.Resolve(System.Data.Linq.RefreshMode.KeepChanges);
}
_dc.SubmitChanges();
}
}

#region 封装Table方法开始
public void Attach(TEntity entity)
{
GetTable().Attach(entity);
}

public void Attach(TEntity entity, bool asModified)
{
GetTable().Attach(entity, asModified);
}

public void Attach(TEntity entity, TEntity original)
{
GetTable().Attach(entity, original);
}

public void AttachAll<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : TEntity
{
GetTable().AttachAll
<TSubEntity>(entities);
}

public void AttachAll<TSubEntity>(IEnumerable<TSubEntity> entities, bool asModified) where TSubEntity : TEntity
{
GetTable().AttachAll
<TSubEntity>(entities, asModified);
}

public void DeleteAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : TEntity
{
GetTable().DeleteAllOnSubmit
<TSubEntity>(entities);
}

public void DeleteOnSubmit(TEntity entity)
{
GetTable().DeleteOnSubmit(entity);
}

public IEnumerator<TEntity> GetEnumerator()
{
return GetTable().AsEnumerable().GetEnumerator();
}

public System.Data.Linq.ModifiedMemberInfo[] GetModifiedMembers(TEntity entity)
{
return GetTable().GetModifiedMembers(entity);
}

public System.ComponentModel.IBindingList GetNewBindingList()
{
return GetTable().GetNewBindingList();
}

public TEntity GetOriginalEntityState(TEntity entity)
{
return GetTable().GetOriginalEntityState(entity);
}

public void InsertAllOnSubmit(IEnumerable<TEntity> entities)
{
GetTable().InsertAllOnSubmit(entities);
}

public void InsertOnSubmit(TEntity entity)
{
GetTable().InsertOnSubmit(entity);
}

public override string ToString()
{
return "Linq2Dt Ojbect!";
}
#endregion 封装Table方法结束
}
}

 

posted @ 2010-03-22 23:30  bndy  阅读(2559)  评论(1)    收藏  举报