2012-10-18 2 views
2

지금까지 DNN의 내 페이지 코드를 통해 모듈을 추가하는 코드를 시도했습니다. 내가 tabid=116에 존재하는 모듈을 추가하려고하고 pageLoad 내 현재 탭 또는 페이지에 moduleId=507을 가진 Event.But 오류를 던지는 마지막 줄프로그래밍 방식으로 내 페이지에 모듈을 추가하는 방법

"Violation of UNIQUE KEY constraint 'IX_TabModules_UniqueId'. Cannot insert duplicate key in object 'dbo.TabModules'. The duplicate key value is (555ba77a-be19-40a0-bb72-559672230345)." 

알려주세요 말하고

protected void Page_Load(object sender, EventArgs e) 
{ 
     ModuleController MC = new ModuleController(); 
     ModuleInfo MInfo = new ModuleInfo(); 
     MInfo = MC.GetModule(507, 116,false);//Just Hard coded for testing 
     MInfo.TabID = PortalSettings.ActiveTab.TabID; 
     MInfo.PaneName = "ContentPane"; 
     MInfo.Alignment = "left"; 
     MC.AddModule(MInfo);//Line throwing error :- 

} 

내가 어디에서 잘못하고있는거야? 이것이 모듈을 추가하는 올바른 방법입니까?

답변

4

내가 알아 차린 첫 번째 사실은 효과적으로 모듈의 동일한 인스턴스를 데이터베이스에 추가하려고한다는 것입니다. TabID을 변경했지만 ModuleInfo 인스턴스 내의 다른 모든 ID는 여전히 존재합니다. how DNN adds an existing module합니다 (DoAddExistingModule 방법으로 볼)을 보면

, 그들은 ModuleInfo 인스턴스에서 Clone()를 호출하여 시작하고 (당신이 타격하고있는 제약 조건 임) UniqueId를 재설정 :

newModule.UniqueId = Guid.NewGuid(); 
+0

덕분에 많은 ... 그것은 나를 도왔다. – Pranav

+0

그게 날 교수형에 처한거야. 브라이언 감사합니다! – DotNetNuclear