이것은 내 ASP.NET 웹 응용 프로그램에 사용하는 현재 디자인 패턴입니다. 저장소를 사용하는 사람들을 보았지만 저장소 디자인 패턴 구현을 얻지 못했습니다.ASP.NET 저장소 디자인 패턴
내 디자인에서 저장소 패턴을 구현하는 방법을 알아낼 수 있습니까? 또한 저장소에 구현하면 얻을 수있는 이점은 무엇입니까?
또한 설계시 구현해야하는 인터페이스를 잘 사용하고 있습니까?
고객 클래스 (Customer.cs)
public class Customer
{
public int CustomerID { get; set; }
public string Name { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
}
DBManager 클래스 (DBManager.cs)
public class DBManager
{
private const string connectionString = "some connection string";
public static IEnumerable<Customer> getAllCustomers()
{
List<Customer> cust = new List<Customer>();
try
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
string cmdText = "SELECT * FROM Customer";
SqlCommand comm = new SqlCommand(cmdText, conn);
SqlDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
cust.Add(new Customer
{
CustomerID = int.Parse((string)dr["customerID"]),
Name = (string)dr["name"],
Address1 = (string)dr["address1"],
Address2 = (string)dr["address2"]
});
}
}
}
catch (SqlException e)
{
throw e;
}
return cust;
}
}
색인 페이지의 코드 숨김 (index.aspx.cs)
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
IEnumerable<Customer> cust = DBManager.getAllCustomers();
// some codes to display IEnum customers in page
}
}
내가 저장() 메소드에서 의미를 만들기 위해 노력하고있어. 이제 내가 InsertCustomer 전화를 가정 해 봅시다 경우 , 고객은 실행 종료 시점에 이미 내 데이터베이스에 삽입됩니다. 왜 Save() 메소드가 필요합니까? – InnovativeDan
구현에 따라 다릅니다. 대부분의 경우 저장소 패턴은 작업 단위 (UoW) 패턴과 함께 설정됩니다. 이 경우 데이터 저장소 (이 경우 DB)의 각 작업에 대해 UoW 내에서 연결 인스턴스를 만들고 해당 연결을 리포지토리에 전달합니다. 리포지토리에서 작업이 완료되면 UoW는 각각에 Save() 메서드를 호출합니다. 무언가가 작동하지 않으면 트랜잭션을 커밋 할 수 없으며 롤백도 수행 할 수 있습니다. 그러나 당신이 지적한대로, 그것은 생략 될 수 있습니다. – jensendp
감사합니다. 답변으로 표시. – InnovativeDan