【发布时间】:2017-03-24 18:43:55
【问题描述】:
我正在尝试在 ASP.NET MVC 项目中使用三层架构和存储库模式。但在某些情况下,三层架构和存储库模式看起来几乎相同。所以我尝试研究以下内容以使其更清楚:
在那之后,我进入了以下代码进行实施,并希望得到一些建议,以更有效的方式改进实施:
模型 - 部门类:
public class Department
{
public int DepartmentID { get; set; }
public string Code { get; set; }
public string DepartmentName { get; set; }
}
接口 - IRepository 接口:
public interface IRepository
{
public int Add(Student aStudent); //For Adding Students
public int Add(Department aDepartment); //For Adding Departments
}
DAL - DepartmentGateway 类:
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 部分。我试图确保这是否是正确的方法并让我知道。谢谢。
注意:我很抱歉提出这个问题。我实际上将这两件事混合在一起,并希望专家提供一些带有代码示例的建议。请不要发布任何链接。我已经看过一些了。
【问题讨论】:
-
你没有使用 ORM 吗?
-
你好@Div!暂时没有。它处于测试模式,稍后将迁移到 ORM。
标签: sql asp.net-mvc repository-pattern three-tier