2010-07-13 4 views
0

이 개념을 얻으려면 매우 중요한 개념이 누락되어 있어야합니다. 따라서이 도움을 받으려면 오류가 발생합니다.간단한 joined-subclass 예제는 기본 테이블의 ID 열을 업데이트하려고 시도합니다.

----> System.Data.SqlClient.SqlException : 'ProductID'열을 업데이트 할 수 없습니다.

은 내가 부하가 제대로 작동하고 난 모든 속성을 검사 할 수 있지만 업데이트가 실패이

var tblEvent = session.Load<TblEvent>(17); 
      tblEvent.Code+= " - test update"; 
      using (var tran = session.BeginTransaction()) 
      { 
       session.SaveOrUpdate(tblEvent); 
       tran.Commit(); 
      } 

을 실행할 때.

Heres는 매핑 파일 확인

<hibernate-mapping namespace="Booking.BLL" assembly="Booking.BLL" xmlns="urn:nhibernate-mapping-2.2" > 
<class name="TblProduct" table="tblProduct" schema="dbo"> 
    <id name="_productID" access="field" column="ProductID" type="Int32" > 
    <generator class="native" /> 
    </id> 
    <property name="Active" type="Boolean" not-null="true" /> 
    <property name="AllowBackOrder" type="Boolean" not-null="true" /> 
    <property name="BuyY" type="Int32" precision="10" /> 
    <property name="BuyYQty" type="Int32" precision="10" /> 
    <property name="CategoryID" type="Int32" precision="10" /> 
    <property name="Code" type="String" length="50" /> 
    <property name="ColourID" type="Int32" precision="10" /> 
    <property name="ColourNameOverride" type="String" length="250" /> 
    <property name="Cost" type="Decimal" precision="10" not-null="true" /> 
    <property name="CreatedBy" type="Int32" precision="10" /> 
    <property name="CreatedDate" type="DateTime" /> 
    <property name="CustomSort1" type="Int32" precision="10" /> 
    <property name="CustomSort2" type="Int32" precision="10" /> 
    <property name="CustomSort3" type="Int32" precision="10" /> 
    <property name="DefaultImageID" type="Int32" precision="10" /> 
    <property name="Depth" type="Decimal" precision="10" not-null="true" /> 
    <property name="DispatchCategoryID" type="Int32" precision="10" /> 
    <property name="DisplayIfNoStock" type="Boolean" not-null="true" /> 
    <property name="GetXFree" type="Int32" precision="10" /> 
    <property name="GetXPercentDiscount" type="Decimal" precision="6" /> 
    <property name="Height" type="Decimal" precision="10" not-null="true" /> 
    <property name="IsFavourite" type="Boolean" not-null="true" /> 
    <property name="IsFeatured" type="Boolean" not-null="true" /> 
    <property name="IsInSite" type="Int32" precision="10" /> 
    <property name="IsSpecial" type="Boolean" not-null="true" /> 
    <property name="Keywords" type="String" length="250" /> 
    <property name="LongDescription" length="2147483647" /> 
    <property name="LongDescription2" length="2147483647" /> 
    <property name="LongDescription3" length="2147483647" /> 
    <property name="ManufacturerID" type="Int32" precision="10" /> 
    <property name="Name" type="String" length="250" not-null="true" /> 
    <property name="NoStockMessage" type="String" length="250" /> 
    <property name="OrderRanking" type="Int32" precision="10" /> 
    <property name="ParentID" type="Int32" precision="10" /> 
    <property name="Price" type="Decimal" precision="10" not-null="true" /> 
    <property name="PriceMember" type="Decimal" precision="10" /> 
    <property name="PriceRRP" type="Decimal" precision="10" /> 
    <property name="PriceSpecial" type="Decimal" precision="10" /> 
    <property name="PromotionID" type="Int32" precision="10" /> 
    <property name="RefExt" type="String" length="250" /> 
    <property name="SellBundledOnly" type="Boolean" /> 
    <property name="Sex" type="Int32" precision="10" /> 
    <property name="ShortDescription" type="String" length="500" not-null="true" /> 
    <property name="Size" type="String" length="50" /> 
    <property name="SizeID" type="Int32" precision="10" /> 
    <property name="SizeNameOverride" type="String" length="250" /> 
    <property name="SizeUnit" type="String" length="10" /> 
    <property name="SpecialEnd" type="DateTime" /> 
    <property name="SpecialStart" type="DateTime" /> 
    <property name="Status" type="Boolean" not-null="true" /> 
    <property name="Stock" type="Int32" precision="10" not-null="true" /> 
    <property name="SupplierID" type="Int32" precision="10" /> 
    <property name="TaxExempt" type="Boolean" not-null="true" /> 
    <property name="UpdateBy" type="Int32" precision="10" /> 
    <property name="UpdateDate" type="DateTime" /> 
    <property name="WeightKG" type="Decimal" precision="10" not-null="true" /> 
    <property name="Width" type="Decimal" precision="10" not-null="true" /> 
    <many-to-one name="Parent" class="TblProduct" column="ProductID" not-null="true" /> 
    <bag name="TblProducts" table="tblProduct" inverse="true"> 
    <key column="ProductID" /> 
    <one-to-many class="TblProduct" /> 
    </bag> 
     <joined-subclass name="TblEvent" table="tblEvent"> 
     <key column="EventID" /> 
       <property name="AttachmentFileURL" type="String" length="200" /> 
       <property name="GLAccountNo" type="String" length="20" /> 
       <property name="MultiDayEvent" type="Boolean" not-null="true" /> 
       <property name="PromotionActive" type="Boolean" not-null="true" /> 
       <property name="RequiresLogin" type="Boolean" not-null="true" /> 
       <property name="TopLevelCategoryID" type="Int32" precision="10" not-null="true" /> 
       <property name="TotalAllocation" type="Int32" precision="10" not-null="true" /> 
       <bag name="TblSessionTemplates" table="tblSessionTemplate" inverse="true"> 
       <key column="EventID" /> 
       <one-to-many class="TblSessionTemplate" /> 
       </bag> 
       <bag name="TblSessions" table="tblSession" inverse="true"> 
       <key column="EventID" /> 
       <one-to-many class="TblSession" /> 
       </bag> 
     </joined-subclass>  
</class> 
</hibernate-mapping> 

답변

1

는 제품 ID 대신 parentID를 가리키는 대일 관계였다 밝혀졌습니다. db2hbm이 자체 참조 외래 키를 처리 할 수없는 것 같습니다

관련 문제