使用 Linq To SQL 时,我是不是应该在 BLL 类中使用数据访问和业务逻辑
Posted
技术标签:
【中文标题】使用 Linq To SQL 时,我是不是应该在 BLL 类中使用数据访问和业务逻辑【英文标题】:Should I be using Data Access and Business Logic inside my BLL class when using Linq To SQL使用 Linq To SQL 时,我是否应该在 BLL 类中使用数据访问和业务逻辑 【发布时间】:2012-07-05 16:31:40 【问题描述】:我正在使用ASP.NET Web Forms/C#
。
我研究了如何在我的应用程序中实现BLL
和DLL
。
我发现很多人说使用 Linq To SQL
代替了 DAL
本身。
所以您应该在BLL
类本身中访问数据并实现业务逻辑。不确定它是否正确。
目前我有一个类CustomerBLL
。我正在访问数据并在其中实现业务逻辑。
所以我的问题是,这是一个好方法吗?
我可以关注这个吗?
目前我只有一个 BLL
类,我应该每个 .aspx
页面只使用一个还是一个或将类似的页面组合在一起。
这是我的CustomerBLL.cs
(仅包括几个功能)。
namespace CwizBankApp
public class CustomerBLL
public string GetDateFormat()
using (var db = new DataClasses1DataContext())
var format = db.CODEs.Where(code => code.NAME.Equals("dateformat")).Select(code=>code.DRNAME) .SingleOrDefault();
return format;
public IList<string> GetAccountTypes()
using (var db = new DataClasses1DataContext())
var acctype = db.mem_types.Select(account=>account.CustCategory).Distinct().ToList();
return acctype;
public IList<mem_city> GetCities(int index)
using (var db = new DataClasses1DataContext())
var city = db.mem_cities.Where(c => c.state_id.Equals(index)).ToList();
return city;
public string InsertDate(string datefield,string dateFormat)
string dd, mm, yyyy;
string date;
string [] split = Regex.Split(datefield, @"/");
yyyy = split[2];
if (dateFormat.Equals("British"))
dd = split[0];
mm = split[1];
else
dd = split[1];
mm = split[0];
date = mm.PadLeft(2, '0') + "/" + dd.PadLeft(2, '0') + "/" + yyyy;
return date;
public string RetrieveDate(string datefield,string dateFormat)
string dd, mm, yyyy;
string date;
string [] split = Regex.Split(datefield, @"/");
dd = split[1];
mm = split[0];
yyyy = split[2];
if (dateFormat == "British")
date = dd.PadLeft(2, '0') + "/" + mm.PadLeft(2, '0') + "/" + yyyy;
else
date = mm.PadLeft(2, '0') + "/" + dd.PadLeft(2, '0') + "/" + yyyy;
return date;
欢迎提出任何建议。
【问题讨论】:
【参考方案1】:通常我将 BL 与 DAL 分开,因此 DAL 需要对 BL 的引用。这意味着 BL 包含 POCO 和一个描述存储库/工作单元/的接口......所以要回答你的问题,是的,我仍然会创建一个使用 L2S 的 DAL。
为了回答您的第二个问题,我将为您域中存在的每个实体创建一个业务对象。通常这与 DAL 中的表匹配。 aspx 的代码隐藏包含页面的逻辑,而不是业务层。
【讨论】:
非常感谢您的建议。 任何文章链接或简单示例都会有很大帮助。谢谢。 我会看看能不能自己做一个,但我不能预测什么时候。以上是关于使用 Linq To SQL 时,我是不是应该在 BLL 类中使用数据访问和业务逻辑的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows Phone 上使用 Linq to SQL 时,是不是可以提高批量删除的性能?
在 LINQ-To-SQL 中,我应该使用 NOLOCK 来提高性能吗?