또 다른 MVC 질문.MVC 모델/컨텍스트 작업 흐름
많은 데이터베이스 요청 등을하는 웹 응용 프로그램 도구에서 작업하고 있습니다. 그리고이 한 페이지는 MVC에서 많은 어려움을 겪고 있습니다.
내가 전에 C#에서 페이지를 생성하고 당신은 값을 비교하기 위해 서로 옆에 4 그리드에 표시 할 수 있습니다처럼 보이는 방법입니다.
지금 MVC에서 나는이 방법으로 문제 해결에 대해 생각했다 : 난 항상 연결 문제에 따라 일반적으로 무작위 오류 메시지를 얻을 그러나... 그래서 다른 많은 것들을 시도 내 코드가 지금 당황 스럽기는하지만 바로 여기가 가장 중요한 부분입니다. (단 2의 선택과 예)
VIEW
정말 MainDDL1, SubDDL1, Search1, MainDDL2, SubDDL2, Search2 (이 작동)
CONTROLLER
public PartialViewResult getGrid1(string MainDDL1, string SubDDL1, string Search1)
{
DataSearchModel voModel = new DataSearchModel();
voModel.dtResultSet1 = DLA.DataSearchContext.getResultSet1(MainDDL1, SubDDL1, Search1);
return PartialView(MainDDL1, voModel);
}
public PartialViewResult getGrid2(string MainDDL2, string SubDDL2, string Search2)
{
DataSearchModel voModel = new DataSearchModel();
voModel.dtResultSet2 = DLA.DataSearchContext.getResultSet2(MainDDL2, SubDDL2, Search2);
return PartialView(MainDDL2, voModel);
}
public ViewResult DataSearch(string text)
{
DataSearchModel oModel = new DataSearchModel();
oModel.alMainDDL = DLA.DataSearchContext.getMainDDL();
return View(oModel);
}
I을 전달합니다 싫어하는 것은 dtResultSet1과 dtResultSet2를 같은 메소드를 호출하는 대신 사용해야한다는 것입니다. 왜 그냥 getResultSet, dtResultSet 등을 호출 할 수 없습니까? 새 모델을 만들 때 모델에는 자체 메서드가 있어야합니다. 또는 모델은 객체와 비교할 수 없습니다. dtResultSet1, dtResultSet2위한
모델
선언 검색 문자열 등
컨텍스트 2. 하나
public static DataTable getResultSet1(string sChoice, string sFeat, string sSearch)
{
return setResultSet1(sChoice, sFeat, sSearch);
}
private static DataTable setResultSet1(string sChoice, string sFeat, string sSearch)
{
DataTable dtTemp = new DataTable();
string sQuery = setSqlQuery(sChoice, sFeat, sSearch);
OleDbConnection dbConnection = null;
// Instantiate the Connection Object
dbConnection = new OleDbConnection(ConfigurationManager.ConnectionStrings["OracleDataBase"].ConnectionString);
//dbConnection.Open();
dbConnection.Open();
OleDbCommand dbCommand = null;
// Instantiate the Command Object
dbCommand = new OleDbCommand(sQuery, dbConnection);
dbCommand.CommandType = CommandType.Text;
OleDbDataReader dr = null;
// Execute the Stored Procedure
dr = dbCommand.ExecuteReader();
dtTemp = setResultSetRows(dtTemp, sChoice, dr);
dr.Dispose();
dbConnection.Close();
return dtTemp;
}
private static string setSqlQuery(string sChoice, string sFeat, string sSearch)
{
switch (sChoice)
{
case "T_PRCL":
case "T_PRCL_FEA":
case "T_GIS_PRCL":
return "SELECT * FROM " + sChoice + " WHERE " + sFeat + "='" + sSearch + "' and sys_del_flag = 0";
case "SGD_SFC_FEAT":
case "MSURFACE":
case "SGD_MIN_FEAT":
case "MMINERAL":
return "SELECT * FROM " + sChoice + " WHERE " + sFeat + "='" + sSearch + "' AND EXPIRY_DATE is NULL";
case "V_SURFACE":
case "V_MINERAL":
return "SELECT * FROM " + sChoice + " WHERE " + sFeat + "='" + sSearch + "'";
default:
return "SELECT sysdate as UNKNOWN_ERROR from dual";
}
}
방법 .. 여기서 다시 정확히 동일 , 나는 getResultSet이라는 하나의 정적 메서드에 모든 것을 넣는 것을 선호합니다. 또한 나는 Connection을 전역 변수 (OleDBConnection = null 등)로 가지고 있었고 연결 등은 자체 방법이었다. 연결이 겹칠 때마다 이것은 더 많은 임의의 오류를 발생 시켰습니다. 일반적으로 하나의 리더가 다른 리더보다 먼저 수행 된 경우. 내가 이해하지 못하는 것은 서로 다른 모델 (객체)들이 자신의 독립 변수, 객체를 사용해서는 안되기 때문입니다.
누군가가이 문제에 대해 의견을 나눌 수 있기를 바랍니다.
당신이 시도 했습니까? (두 번째 대답) http://stackoverflow.com/questions/342613/connection-management-asp-net 아마 연결 관리자를 구현하면 동시성 문제를 해결하는 데 도움이됩니다. –
이것이 Connection/DataReader 문제를 해결 한 것 같습니다. 그러나, 나는 계속 Ajax 내부 서버 오류가 발생합니다. – seN
알겠습니다. 괜찮 았어. 방금 뭔가 이름을 변경하는 것을 잊었습니다. 나는 곧바로 대답을 게시 할 것이다. – seN