ASP.NET MVCプロジェクトで3層アーキテクチャとリポジトリパターンを使用しようとしています。しかし、場合によっては、3層アーキテクチャとリポジトリパターンがほぼ同じに見えます。だから私はそれがより明確にするために以下のことを勉強しようとした。その後3層アーキテクチャとリポジトリパターン
、私は実装のために、次のコードに来ているといくつかのアドバイスをして実装を改善することを期待しますより効率的な方法:
モデル - 部門のクラス:
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セクション。私はこれが進んで私に知らせる正しい方法であることを保証しようとしています。ありがとう。
注:私はこの質問をすることを謝罪します。私は実際にこれらの2つのことを混在させており、コードサンプルを持つ専門家からのアドバイスを期待しています。リンクを投稿しないでください。私はすでにいくつかを見た。
ORMを使用していませんか? –
こんにちは@Div!当分の間、いいえ。テストモードで、後でORMに移行します。 –