멀티 사이트 웹 사이트를 다루는 데 도움이되는 모델 바인더가 있습니다. 각 StoreObject에는 SiteThemes 컬렉션이 있습니다.모델 바인더에서 엔티티가 업데이트되지 않음
public class StoreObject
{
.......
public virtual ICollection<SiteTheme> SiteThemes { get; set; }
}
I는 새로운 테마로 데이터베이스를 업데이트하는 저장소 객체를 호출합니다. 그이 완료되면
public void SaveAndSetSiteTheme(SiteTheme t)
{
context.SiteThemes.Where(f => f.StoreObjectID == t.StoreObjectID).ToList().ForEach(p => p.Active = false);
if (t.SiteThemeID == 0)
{
t.Active = true;
context.SiteThemes.Add(t);
}
context.SaveChanges();
}
, 모델 바인더는 아래의 정확한 데이터를 가지고 store.SiteThemes은 1 개 테마를해야합니다. 그러나이 페이지를 다시 새로 고치면이 모델 바인더가 오래되었습니다. store.SiteThemes 콜렉션은 원래 상태로 돌아가며 비어 있습니다. 나는 지구상에서 무슨 일이 벌어지고 있는지 전혀 모른다. 자세한 정보가 필요하면 알려주십시오.
public class StoreModelBinder : IModelBinder
{
private const string sessionKey = "Store";
private IStoreObjectRepository storeRepository;
public StoreModelBinder()
{
storeRepository = new StoreObjectRepository();
}
public object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
Uri url = HttpContext.Current.Request.Url;
string dom = url.Host;
StoreObject store = storeRepository.Stores.FirstOrDefault(s => s.MainURL == dom);
if (store != null)
HttpContext.Current.Session[sessionKey] = store;
return store;
}
}
어디에서 컨텍스트를 인스턴스화합니까? 또한 연결 문자열을 확인하십시오. 일반적으로이 문제가 발생하면 데이터베이스에 연결하고 있지 않기 때문에 오류가 발생하지 않습니다. 그냥 따라 실행하고 레코드가 생성/업데이트되지 않습니다. – Brian