gpt4 book ai didi

c# - 图层和实体?

转载 作者:行者123 更新时间:2023-11-30 21:03:06 24 4
gpt4 key购买 nike

(我要问 2 个问题)。

我们使用 3 层:Bl、Dal、UI。

enter image description here

我们不想为所有对象构建一个大的BLDAL

因此我们为 AgentsLeads 创建了这个结构。

现在假设我应该写一个方法:

public Agent GetAgentByLead(Lead leadObj)
{
}

问题 #1

此函数应驻留在何处:AgentsBLLeadsBL

问题#2

假设我想使用 Entity Framework 。

查询可以是:

var activeAgents= context.Agents.Where(c => c.ACTIVE).ToList();

这一行可以在myPage.aspx.cs文件中执行。

那么这里的图层在哪里?上下文将驻留在何处?

我只是不明白 EF 如何处理层(就像我的第一个问题)

有什么帮助吗?

最佳答案

这类事情的常用模式是 Repository Pattern ,如果你用谷歌搜索它,你会发现大量信息,这个想法是你基本上创建了一个存储库来封装上下文,这样你就永远不会直接使用它......

我更喜欢具有通用 CRUD 方法的通用存储库,但也有类似的东西:

IEnumerable<T> FindAll(IQuery<T> query);

因此,不必为每个对象类型创建一个唯一的存储库来执行特定查询,例如您的 GetAgentByLead 您将该逻辑包装到一个查询中并传递上下文,这样您的查询、存储库和 Controller (假设 MVC)都是独立的,不相互依赖。

示例查询对象类似于:

public interface IQuery<T>
{
IEnumerable<T> Execute(IContext context);
}

public class FindAllUsersInGroupQuery : IQuery<User>
{
public int GroupId {get; set;}

IEnumerable<User> Execute(IContext context)
{
return context.DoSomeQueryForGettingUsers(GroupId);
}
}

通过这种方式,您可以根据需要模拟查询、存储库和测试 Controller ,而且您最终不会得到难以维护的庞大数据访问器类。

关于c# - 图层和实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13045880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com