데이터베이스에 액세스 할 때 다른 레이어를 추가하여 .NET 프로젝트를 개선하고 싶습니다. 나는 매우 직접적인 꽤 많은 데이터베이스에 액세스하고 있습니다.net에서 데이터 액세스 레이어 모범 사례 구현 프로젝트 MVC
public class DataAccess
{
public bool checkIfExists(String Id)
{
try
{
SqlConnection cnn = new SqlConnection(dataConnection);
cnn.Open();
SqlCommand check_Id = new SqlCommand("SELECT COUNT(*) FROM TABLE_GUID WHERE ([USER_ID] = @Id)", cnn);
check_Id.Parameters.AddWithValue("@Id", Id);
int UserExist = (int)check_Id.ExecuteScalar();
if (UserExist > 0)
{
return true;
}
else
{
return false;
}
}
catch (SqlException ex)
{
Debug.WriteLine("SQL Exception " + ex);
DisplaySqlErrors(ex);
throw ex;
}
}
}
public class AgentBeanController : Controller
{
// GET: AgentBean
public ActionResult Index(string name)
{
return View();
}
[AllowAnonymous]
[WebMethod]
public string AgentURL() //here we create Agent URL and return it to the view
{
string var = Models.AgentBean.createGUID("TODO");
return var;
}
}
: 나는 "도우미"라는 별도의 폴더에 DATAACCESS 클래스를 배치하고
namespace Company.Models
{
public static class AgencyBean
{
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static String createGUID(string name)
{
DataAccess dataAccess = new DataAccess();
bool exists = dataAccess.checkIfExists(Id);
if(exist)
{
dataAccess.delete(Id);
}
retur "ok";
}
}
}
내 쿼리의 대부분을 포함 : 이것은 내 코드입니다 방법. 어떻게하면 더 나은 기술이 될 수 있습니까? 그렇다면이 액세스는 서비스 계층을 통한 액세스와 같이 더욱 안전 할 수 있습니다. 일부 서버에서는 기존 SQL 데이터베이스에 연결하고 프로젝트에서는 MVC 아키텍처로 작업하고 있습니다.
올바른 길을 가고 있습니다.Google에 "데이터 저장소"및 "종속성 삽입"이라는 용어를 사용하면 한 걸음 더 나아갈 수 있습니다. 저장소의 일반적인 개념은 모델 계층에서 데이터에 액세스하기 위해 별도의 클래스를 사용하지만 (지금처럼) 인터페이스를 준수한다는 것입니다. AgencyBean 클래스를 인스턴스화하면 해당 인터페이스를 구현하는 객체를 인수로 사용하게됩니다. 이점은 단위 테스트에만 사용되는 데이터베이스를 다루지 않는 인터페이스의 두 번째 구현을 가질 수 있다는 것입니다. Ninject와 같은 DI 도구를 사용하면 코드를 더 쉽게 작성할 수 있습니다. –
이제는 단위 테스트를 구현하기를 원하며 DI가 필요하다는 것을 알았습니다. 조언 주셔서 감사합니다! –