mvc 응용 프로그램에서 내 DB에 액세스하기 위해 아음속을 사용하고 있습니다. mvc 모델 바인딩을 사용하여 레코드를 업데이트하려고하면 열이 아닌 항목이 더티로 표시되어 레코드가 업데이트되지 않습니다.mvc 모델 바인딩을 사용하여 Subsonic 업데이트를 사용하는 방법은 무엇입니까?
수동으로 아톰 코드를 조정하여 모든 열을 더티로 표시하려고했지만 때로는 일부 속성 만 업데이트하여 더티로 표시하지 않으려했습니다.
가장 적합한 방법은 무엇입니까?
public void Update(IDataProvider provider, Boolean forceUpdate){
if(this._dirtyColumns.Count>0 || forceUpdate){
if(forceUpdate)
this._dirtyColumns = this.Columns.ToList();
_repo.Update(this,provider);
_dirtyColumns.Clear();
}
OnSaved();
}
편집 : 나는이 코드를 시도
이 문제가 볼 수
[HttpPost]
public ActionResult Update(mapping m)
{
m.SetIsNew(false);
m.Update(true); // here i tweaked the subsonic code passing true sets all the columns to be dirty and updates the record even though isLoaded=false
return RedirectToAction("New");
}
이 내가 아음속 코드를 쥐게하는 방법입니다
이
내 작업입니다 거짓말 :var m = new mapping { ID = 2, Name = "33" };
m.SetIsNew(false);
m.Save();
너무 열이 더럽지 않도록 설정되어 있지 않습니다. 개체 이니셜 라이저를 사용할 때 setter가 호출되지 않아 열이 더티로 설정되지 않은 것처럼 보입니다.
기본 mvc.net 모델 바인딩이 이런 식으로 작동한다고 가정하므로 레코드가 업데이트되지 않는 이유입니다.
편집 2
내 첫 편집 dyork12 지적으로 @ 잘못된 것입니다. Subsonic은 'isLoaded'플래그를 사용합니다.이 플래그가 false로 설정되면 속성을 더티로 설정하지 않습니다. 이것은 레코드를로드 할 때 아음속에 의해 사용되며 로딩이 더티로 설정되지 않는 동안 속성을 설정하도록합니다.
하지만 내 질문은 자동 모델 바인딩을 사용하여 mvc.net보기에서 아음속 개체를 편집하는 가장 좋은 해결 방법은 무엇입니까 남아 있습니다.
보기에서 SubSonic 생성 객체를 바인딩하거나 ViewModel을 사용하고 있습니까? 당신은 이것을 본 적 있습니까? http://stackoverflow.com/questions/5491733/subsonic-and-automapper-dirtycolumns-collection-is-empty-therefore-cant-updat – DaveHogan
왜 더럽지 않은 것으로 표시되어 있습니까? 이 코드 조각은 ActiveRecord에서 가져온 것이므로 열 속성에 바인딩하면 올바르게 작동합니다. 너 뭐 다르게하고있어? 제발 더 많은 코드. –
@ dyork12 : 나는 '편집'에 대답했다. – Daniel