2011-10-10 116 views
2

我有以下數據庫設置:實現nhibernate。類+抽象基類

enter image description here

我需要它映射到一個NHibernate的文件:

  • PowerPrognosisUsageSubmission
  • PowerPrognosisWindSubmission
  • PowerPrognosisSubmissionBase抽象基類

雖然,我一事無成。這裏是我的嘗試:

我試圖實現PowerPrognosisUsageSubmission

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-mapping namespace="DC.Client.Models.Model" assembly="DC.Client.Models" xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="PowerPrognosisUsageSubmission" table="PowerPrognosisSubmissionBase" schema="`dbo`" mutable="true" lazy="false"> 
    <id name="PowerPrognosisSubmissionId" access="property" column="`PowerPrognosisSubmissionBaseID`"> 
     <generator class="native" /> 
    </id> 
    <property name="Date" column="`Date`" /> 
    <property name="Hour" column="`Hour`" /> 
    <property name="Direction" column="`Direction`" /> 
    <property name="Submission" column="`Submission`" /> 
    <property name="Basis" column="`Basis`" /> 
    <many-to-one name="PowerPrognosisUsageArea" class="PowerPrognosisUsageArea" column="`PowerPrognosisAreaBaseID`" not-null="false" lazy="false" /> 
    <joined-subclass name="PowerPrognosisUsageSubmission" table="PowerPrognosisUsageSubmission"> 
     <key column="`Usage`" /> 
    </joined-subclass> 
    </class> 
</hibernate-mapping> 

任何幫助嗎?

回答

0

我建議你看一看FluentNhibernate,在我看來,它給映射表到你的實體類一個更好的方法。

此外,您可能想給這個工具去,它能夠產生的hbm.xml或fluentnhibernate映射文件爲你的。

http://nmg.codeplex.com/

+0

對不起,我不能改變我們使用的是哪種的NHibernate。我只是一個從事項目工作的團隊成員。我會嘗試看看這個工具 – CasperT

+0

你可以在一個單獨的項目中使用FluentNHibernate,並讓它爲你吐出映射(即作弊;) –

+0

如果你不能改變映射類型,那麼我強烈建議你給nhibernate映射生成器一個旋。只需將它指向您的表格並選擇您當前使用的映射類型,它就會自動爲您生成所有的xml /映射類。 – Duy

-2

也許你應該閱讀NHibernate manualChapter 8具有繼承的所有細節。

+0

是的。我在做上面的例子時正在看它。但據我所見,它可以幫助你實現一個繼承子類屬性的超類。但我想要oppesit。我會盡力,雖然 – CasperT

+0

再看我想你誤解了繼承如何工作 –

+0

號我剛纔的話來說不好​​。我的意思是,這看起來像他們的例子創造:支付繼承支票付款,但我想oppecit。用他們的例子 – CasperT

1

我解決它在我自己的

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-mapping namespace="DC.Client.Models.Model" assembly="DC.Client.Models" xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="PowerPrognosisSubmissionBase" table="PowerPrognosisSubmissionBase" schema="`dbo`" mutable="true" lazy="false"> 
    <id name="PowerPrognosisSubmissionId" access="property" column="`PowerPrognosisSubmissionBaseID`"> 
     <generator class="native" /> 
    </id> 
    <property name="Date" column="`Date`" /> 
    <property name="Hour" column="`Hour`" /> 
    <property name="Direction" column="`Direction`" /> 
    <property name="Submission" column="`Submission`" /> 
    <property name="Basis" column="`Basis`" /> 
    <many-to-one name="PowerPrognosisAreaUsage" class="PowerPrognosisAreaUsage" column="`PowerPrognosisAreaBaseID`" not-null="false" lazy="false" /> 
    <joined-subclass name="PowerPrognosisSubmissionUsage" table="PowerPrognosisSubmissionUsage"> 
     <key column="`PowerPrognosisSubmissionBaseID`" /> 
     <property name="Usage" column="`Usage`" /> 
    </joined-subclass> 
    <joined-subclass name="PowerPrognosisSubmissionWind" table="PowerPrognosisSubmissionWind"> 
     <key column="`PowerPrognosisSubmissionBaseID`" /> 
     <property name="PriceAreaEffect" column="`PriceAreaEffect`" /> 
     <property name="ResponsibleEffect" column="`ResponsibleEffect`" /> 
     <property name="W2UShare" column="`W2UShare`" /> 
     <property name="PointCarbonShare" column="`PointCarbonShare`" /> 
    </joined-subclass> 
    </class> 
</hibernate-mapping>