List 템플릿 추가 중에 아래와 같은 오류가 끊임없이 발생하여,

추가 List 템플릿으로 web.Lists.Add(".....", "......", listTemplate) 메소드로 SPList를 추가할 수 없는 경우가 있습니다.

System.Data.SqlClient.SqlException:

테이블 'WSS_Content.dbo.EventReceivers', 'Name' NULL 값을 삽입할 수 없습니다. 열에는 NULL을 사용할 수 없습니다.

INSERT() 실패했습니다.  문이 종료되었습니다.    

 

위치: System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 
위치: System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)

위치: System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler,
 SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
위치: System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
위치: System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result,
 String methodName, Boolean sendToPipe)    

위치: System.Data.SqlClient.SqlCommand.ExecuteNonQuery()    

위치: Microsoft.SharePoint.Utilities.SqlSession.ExecuteNonQuery(SqlCommand command)

 

이 내용을 확인해 본 결과 List Template 안의 Event Add 하는 부분에서 아래와 같은 부분을 확인 할 수 있었습니다.

List Template Element.xml 을 살펴본 결과 아래와 같습니다.

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

  <!-- 리스트 템플릿 정의부분 -->

  <ListTemplate

        Name="FreeTalk_Board"

        Type="8000"

        BaseType="0"

        OnQuickLaunch="TRUE"

        SecurityBits="12"

        Sequence="392"

        DisplayName="FreeTalk_Board"

        Description="FreeTalk_Board"

        Image="/_layouts/images/itann.gif"       

        />

  <!-- 이벤트 리시버 정의부분 -->

  <Receivers ListTemplateId="8000">

    <Receiver>

      <Name>CollectBoardEventReceivers</Name>

      <Type>ItemAdded</Type>

      <SequenceNumber>50000</SequenceNumber>

      <Assembly>SKT.TSquare.SPS.FreeTalk, Version=1.0.0.0, Culture=neutral, PublicKeyToken=388b774ba96c947e</Assembly>

      <Class>SKT.TSquare.SPS.FreeTalk.CollectBoardEventReceivers</Class>

      <Data />

      <Filter />

    </Receiver>

    <Receiver>

      <Name>CollectBoardEventReceivers</Name>

      <Type>ItemDeleting</Type>

      <SequenceNumber>50000</SequenceNumber>

      <Assembly>SKT.TSquare.SPS.FreeTalk, Version=1.0.0.0, Culture=neutral, PublicKeyToken=388b774ba96c947e</Assembly>

      <Class>SKT.TSquare.SPS.FreeTalk.CollectBoardEventReceivers</Class>

      <Data />

      <Filter />

    </Receiver>  

  </Receivers>

</Elements>

 

일단  <Receivers> .... </Receivers> 부분에 있는 내용을 모두 삭제해 보고 리스트를 추가해 본 결과,

위의 오류가 발생하지 않았습니다.

이번에 다시 추가해서 적용해 본 결과 오류가 재발하였습니다.

그래서 이번에는 각 Event의 이름을 다르게 적용해 보았습니다.

 

   ....

  <Receivers ListTemplateId="8000">

    <Receiver>

      <Name>FTEventItemAdded</Name>

      <Type>ItemAdded</Type>

      <SequenceNumber>50000</SequenceNumber>

      <Assembly>SKT.TSquare.SPS.FreeTalk, Version=1.0.0.0, Culture=neutral, PublicKeyToken=388b774ba96c947e</Assembly>

      <Class>SKT.TSquare.SPS.FreeTalk.CollectBoardEventReceivers</Class>

      <Data />

      <Filter />

    </Receiver>

    <Receiver>

      <Name>FTEventItemUpdated</Name>

      <Type>ItemDeleting</Type>

      <SequenceNumber>50000</SequenceNumber>

      <Assembly>SKT.TSquare.SPS.FreeTalk, Version=1.0.0.0, Culture=neutral, PublicKeyToken=388b774ba96c947e</Assembly>

      <Class>SKT.TSquare.SPS.FreeTalk.CollectBoardEventReceivers</Class>

      <Data />

      <Filter />

    </Receiver>  

  </Receivers>

   ....

 

확인해 본 결과 위와 같이 변경하니, 그 이상의 오류는 발생하지 않았습니다.

그 이후에는 이름이 동일해도 오류가 발생하지 않았습니다.

초기에 리스트 템플릿 상에서 동일한 이름으로 등록할 때 발생되는 오류로 생각됩니다.

728x90

+ Recent posts

728x90