gpt4 book ai didi

sql - 三层架构与存储库模式

转载 作者:行者123 更新时间:2023-12-01 23:29:54 24 4
gpt4 key购买 nike

我正在尝试在 ASP.NET MVC 项目中使用三层架构和存储库模式。但在某些情况下,三层架构和存储库模式看起来几乎相同。因此,我尝试研究以下内容以使其更加清晰:

The Repository Pattern

N-Tier Architecture

在那之后,我进入了以下代码来实现,并希望得到一些建议以更有效的方式改进实现:

模型 - 部门类:

public class Department
{
public int DepartmentID { get; set; }
public string Code { get; set; }
public string DepartmentName { get; set; }
}

接口(interface) - IRepository 接口(interface):

public interface IRepository
{
public int Add(Student aStudent); //For Adding Students
public int Add(Department aDepartment); //For Adding Departments
}

DAL - 部门网关类:

public class DepartmentGateway : IRepository
{
/****Repository Pattern - Starts****/
Gateway aGateway = new Gateway();
public int Add(Department aDepartment)
{
aGateway.Query = "INSERT INTO Departments (Code, Name) VALUES (@Code, @Name)";

aGateway.Command = new SqlCommand(aGateway.Query, aGateway.Connection);

aGateway.Connection.Open();

aGateway.Command.Parameters.Clear();
aGateway.Command.Parameters.Add("Code", SqlDbType.NVarChar);
aGateway.Command.Parameters["Code"].Value = aDepartment.Code;
aGateway.Command.Parameters.Add("Name", SqlDbType.NVarChar);
aGateway.Command.Parameters["Name"].Value = aDepartment.DepartmentName;

int rowAffected = aGateway.Command.ExecuteNonQuery();

aGateway.Connection.Close();

return rowAffected;
}
/****Repository Pattern - Ends****/
}

BLL - DepartmentManager 类:

public class DepartmentManager
{
DepartmentGateway aDepartmentGateway = new DepartmentGateway();

public int Add(Department aDepartment)
{
int affect = aDepartmentGateway.Add(aDepartment);

if (affect > 0)
{
return 1;
}
else
{
return 0;
}
}
}

我要离开 UI 部分。我试图确定这是否是继续进行的正确方法并让我知道。谢谢。

注意:很抱歉问这个问题。我实际上混合了这两件事,并希望专家提供一些带有代码示例的建议。请不要发布任何链接。我已经看过一些了。

最佳答案

N-Tier 和存储库模式并不矛盾。事实上,他们真的没有任何关系。 N-Tier 只是一种理念,您的应用程序应该分层构建。它本质上是关于模块化的。存储库模式是关于抽象的,即从应用程序代码中抽象出 SQL 查询。您可以在同一个应用程序中很好地两者

但是,围绕存储库模式存在很多争论。它早于 ORM,并且有一个强有力的论据认为它与 ORM 是多余的。例如,对于 Entity Framework ,DbContext 是您的工作单元,每个 DbSet 都是一个存储库。此时您应该在这里使用的实际上是一种策略模式。您需要一些表示您的数据访问的接口(interface),稍后您将用一个实现(您的 ORM)来填充它。不过,这实际上不会对您的代码产生太大影响,因此它主要是语义。请记住,您可能实际上并不想要“存储库”,并且您绝对不应该构建您的应用程序,就好像您要为每个实体或类似的实体拥有这些实现之一。

关于sql - 三层架构与存储库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40532672/

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