刚学Linq to sql,写了个类,请大家指导下

lawbc 2011-01-16 10:33:07

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

namespace Ciseer.BLL
{
/// <summary>
/// Linq to sql操作基类
/// </summary>
/// <typeparam name="TEntity">实体类类型</typeparam>
/// <typeparam name="TDataContext">具体的DataContext类型</typeparam>
public abstract class BaseBLL<TEntity, TDataContext>
where TEntity : class, new()
where TDataContext : DataContext, new()
{
/// <summary>
/// DataContext的子类
/// </summary>
protected TDataContext dataContext;

/// <summary>
/// 公共操作方法类
/// </summary>
public BaseBLL()
{
dataContext = new TDataContext();
dataContext.Log = LogWriter.Instance.TextWriter;
}

/// <summary>
/// 一个筛选器,定义怎么样使用实体的ID进行读取,删除操作
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
protected abstract Func<TEntity, bool> GetPredicate(string id);

/// <summary>
/// 添加记录
/// </summary>
/// <param name="entity"></param>
public void Insert(TEntity entity)
{
dataContext.GetTable<TEntity>().InsertOnSubmit(entity);
SubmitChanges();
}

/// <summary>
/// 删除记录
/// </summary>
/// <param name="id"></param>
public void Delete(string id)
{
TEntity entity = GetEntity(id);
if (entity != null)
{
dataContext.GetTable<TEntity>().DeleteOnSubmit(entity);
SubmitChanges();
}
}

/// <summary>
/// 修改记录
/// </summary>
/// <param name="entity"></param>
public void Update(TEntity entity)
{
if (entity != null)
{
SubmitChanges();
}
}

/// <summary>
/// 获取一条记录
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public TEntity GetEntity(string id)
{
return dataContext.GetTable<TEntity>().SingleOrDefault(GetPredicate(id));
}

/// <summary>
/// 查询
/// </summary>
/// <param name="predicate">查询筛选器</param>
/// <returns></returns>
public IList<TEntity> Select(Func<TEntity, bool> predicate)
{
return dataContext.GetTable<TEntity>().Where(predicate).ToList();
}

/// <summary>
/// 更新到数据库
/// </summary>
protected virtual void SubmitChanges()
{
try
{
dataContext.SubmitChanges();
}
catch(ChangeConflictException)
{
dataContext.ChangeConflicts.ResolveAll(RefreshMode.KeepCurrentValues);
dataContext.SubmitChanges();
}
}
}
}



请问这样谢有什么问题吗,我在网上看到的都不是这样写的
...全文
177 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
有梦有理想 2011-01-21
  • 打赏
  • 举报
回复
/// <summary>
/// 更新到数据库
/// </summary>
protected virtual void SubmitChanges()
{
try
{
dataContext.SubmitChanges();
}
catch(ChangeConflictException)
{
dataContext.ChangeConflicts.ResolveAll(RefreshMode.KeepCurrentValues);
dataContext.SubmitChanges();
}
}

这个出现异常,怎么还要用dataContext.SubmitChanges();
ChinaXtHuLang 2011-01-21
  • 打赏
  • 举报
回复
ADO.NET王道
有梦有理想 2011-01-21
  • 打赏
  • 举报
回复
有空可以看看VIT
rart2008 2011-01-19
  • 打赏
  • 举报
回复
ado.net
西门喷血 2011-01-19
  • 打赏
  • 举报
回复
公司不让用LINQ....很垃圾的 还是用ADO.NET把
lawbc 2011-01-18
  • 打赏
  • 举报
回复
写这个类就是为了BLL代码简化,不然起的bll类还是要一个一个的insert、delete、update
有了这个类就不用谢那些代码了

对于Join Union 和事务的还没有考虑呢,大家有没有代码,贴出来瞅瞅
telankes2000 2011-01-17
  • 打赏
  • 举报
回复
神马linq的 都没有ado.net好用
ado.net 我看行 大家都用它!
chen_ya_ping 2011-01-17
  • 打赏
  • 举报
回复
其实对于数据库的操作还是利用ado.net这个最实用
fendouaj 2011-01-17
  • 打赏
  • 举报
回复
我也在用linq to entity 真的不错!
moonwrite 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yzf86211861 的回复:]

linq 已死
[/Quote]
是 linq to sql 已死 已经升级为linq to entity 了

linq+泛型集合 是一种很爽歪歪的东西
zzz9413 2011-01-17
  • 打赏
  • 举报
回复
数据访问层的方法LINQ已经写好了
自己写业务逻辑的方法就好,用不着再多此一举去封装
写这个类的目的,就是为了表示会自己写个类的技术吧?
q107770540 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yzf86211861 的回复:]

linq 已死
[/Quote]
何出此言?
yzf86211861 2011-01-17
  • 打赏
  • 举报
回复
linq 已死
冰川711 2011-01-17
  • 打赏
  • 举报
回复
很掘 楼主啊!!!!!
q107770540 2011-01-17
  • 打赏
  • 举报
回复
没必要的说
机器人 2011-01-16
  • 打赏
  • 举报
回复
两个表以上的查询,比如join? union? 都没办法支持。而且事务也没有。这样简陋的包装不如不用。
机器人 2011-01-16
  • 打赏
  • 举报
回复
简单的包装。。。就是把丰富的linq特性都限制掉了。
lawbc 2011-01-16
  • 打赏
  • 举报
回复
ls说的没有必要什么意思呢
threenewbee 2011-01-16
  • 打赏
  • 举报
回复
没有必要。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧