- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个具有以下层的 WPF 应用程序:
UI( View + ViewModel)-> BLL -> DAL
所有这些都引用域模型层。
目前,我正在通过 BLL 将所有数据库调用从 UI 传送到 DAL。但我不确定这是否是正确的方法。
BLL 中的大多数方法如下所示:
public ICollection<User> GetUsers()
{
return dbAccess.GetUsers();
}
进而调用 DAL 中的类似方法:
public ICollection<User> GetUsers()
{
using (var context = new DbContext())
{
return context.Users.ToList();
}
}
1) 这种将调用从 BLL 传送到 DAL 的方式似乎相当多余。当然,有一些 BLL 方法实际上包含一些业务逻辑。我应该放弃 BLL 吗?
2) 这种方法的另一个问题是我无法使用延迟加载,因为 DbContext 是在 DAL 中创建和处置的。我猜想这可以通过在 ViewModel 中创建 DbContext 来解决,但是我应该什么时候处理它?</p>
3)最后,由于我没有使用延迟加载,所以我必须立即加载相关实体。但并非所有 View 都需要相同的相关实体,因此我经常会得到几种返回相同实体但包含不同内容的方法。这样可以吗?
X)我的所有数据库方法都存在于一个名为 DbAccess 的大型类中。为我的每个 ViewModel(或者可能是我的每个实体)创建一个数据库服务类会更好吗?
最佳答案
您可以直接从 BL 调用 EF 方法,但这会将 BL 与 EF 联系得太紧密。如果您编写单独的 DAL 来访问 EF,那么您可以在不触及 BL 的情况下替换整个 DAL,如果您直接从 BL 调用 EF,则这是不可能的。
您还可以对每个 httpRequest 使用 DbContext,如下所示
public static class ObjectContextPerHttpRequest
{
public static MyEntities Context
{
get
{
string objectContextKey = HttpContext.Current.GetHashCode().ToString("ObjectContextPerHttpRequest");
if (!HttpContext.Current.Items.Contains(objectContextKey))
{
HttpContext.Current.Items.Add(objectContextKey, new DomainModel.MyEntities());
}
return HttpContext.Current.Items[objectContextKey] as MyEntities;
}
}
}
关于entity-framework - Entity Framework - 我应该从 BLL 还是 DAL 调用 DbContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19999105/
请看下面的代码: Imports Microsoft.VisualBasic Public Class PersonBLL Private Name As String Private
我有一个分层解决方案如下: UI(用户界面) BLL(业务逻辑层) DAL(数据访问层) SharedEntities(仅包含实体 POCO 的 VS 项目) 我希望 BLL 有一个名为 GetPro
今天有人问我为什么在 asp.net 应用程序中为我的 bll 类使用这样的代码: public class StudentBll { public static DataTable GetS
在 BLL 中返回业务规则错误的最佳实践是什么?我是否应该只引发异常并在表示层捕获它们,我应该返回某种包含任何异常类型信息的对象吗? 最佳答案 “返回”这个词在这里很棘手。 多层设计的主要优点是正交性
我知道这是一个非常基本的问题。但我真的无法理解BLL应该包含的内容。 让我举个例子。 让我们考虑一个Login.aspx网页,该网页用于方便用户登录。 在这种情况下,Login.aspx将具有两个文本
我认为 BLL 是关于数据的。它不应包含名为 SendEmail 的方法。 BLL 是用于缓存数据、操作数据、进行与业务相关的计算的地方。发送电子邮件是一个业务流程,但实际发送电子邮件的代码应该在 B
我很困惑如何从业务层返回结果。有时如果消息没有通过标准,我需要返回消息。例如: public SalesDTO GetSalesByPrescriptionNo(string prescription
我的 UI 层中有一个设置文件,我需要在我的业务层中使用它的值。我的 UI 和业务层位于不同的程序集中。 我无法直接访问业务层中的设置值,因此我目前通过业务层构造函数传递它们。我正在考虑制作一个包含所
我们将在 .Net 中重建我们的网站之一。我读过很多文章,非常喜欢将我们的项目分成数据访问层 (DAL)、业务逻辑层 (BLL) 和表示层的想法(我们来自经典的 ASP,所以这对我们来说是一个巨大的进
我已经有了一个运行良好的分层数据访问设计。但我不知道这是否是最合适的实现。 我只是想知道 BLL 类或方法应该是静态的还是应该是只有一个实例的 concreate 类? 同时,我不需要序列化 BL
请耐心等待,我是 MVC 和 WCF 的新手。我已经有一组公开我的 BLL 的服务 (WCF),我正在尝试从我的 MVC.net Web 应用程序中使用这些服务,但我不确定如何在此处执行安全操作。 这
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭去年。 Improve th
确实是个愚蠢的问题,但只是想知道其他人对 DAL 和 BLL 的命名约定是否有比这些更好的名称。 最佳答案 我猜你指的是你正在创建的项目。 如果您关注“.NET Framework design gu
我需要你的建议。我正在尝试在 ASP.NET 中开发一个将 BBL、DAL、BOboj 分开的 3 层架构。 在 DAL 内部,我通过 _view 收集数据。我想知道,我应该为每个 View 编写另一
Web 应用程序 BLL 层中所有可能的缓存选项\级别是什么 (我知道我们只能在后面的 aspx 和 ascx 代码中使用 Session 字典,对吗?) 最佳答案 session 在 ASP.NET
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
只是一个简短的问题。在具有业务逻辑层 (BLL) 和数据访问层 (DAL) 的分层架构环境中,DAL 应将哪些类型传递给 BLL? 目前,我们的 DAL 类生成 DataTables 和 SQlDat
我习惯于手动创建 UI、BLL、DAL(有时我使用 LINQ-to-SQL 或 SubSonic 来创建 DAL)。自 MVC 发布以来,我已经使用 MVC 完成了几个小项目。 在这些项目中,我仍然继
您认为使用 F# 来实现业务逻辑层是个好主意吗?我将使用 Entity Framework 作为“数据映射器”并使用 C# 实现 UI 逻辑。 欢迎任何想法。我将不胜感激任何帮助! 谢谢。 附言这样做
Closed. This question is opinion-based。它当前不接受答案。 想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。 2年前关闭。
我是一名优秀的程序员,十分优秀!