2011-09-07 12 views
12

वर्ग "प्रकार का निर्धारण करने के लिए ... असमर्थ":Nhibernate Conformist मानचित्रण

public class SOPProcess : ISOPProcess 
{ 
    public virtual Guid Id { get; set; } 
    public virtual SOP SOP { get; set; } 
    public virtual ProcessType Type { get; set; }  

    public virtual SOPProcessInput Input { get; set; } 
    public virtual SOPProcessOutput Output { get; set; } 
    public virtual SOPProcessMeasures Measures { get; set; } 

    public virtual decimal YieldFactor { get; set; } 

    public virtual SOPProcess PreviousProcess { get; set; } 
    public virtual SOPProcess NextProcess { get; set; } 
} 

मैपिंग:

public class SOPProcessMap : ClassMapping<SOPProcess> 
{ 
    public SOPProcessMap() 
    { 
     Id(s => s.Id, i => i.Generator(Generators.GuidComb)); 

     Property(s => s.YieldFactor);   

     ManyToOne(s => s.SOP, m => 
           { 
            m.Column("SopId"); 
            m.Cascade(Cascade.All); 
           }); 

     ManyToOne(s => s.Type, m => 
           { 
            m.Column("ProcessTypeId"); 
            m.Cascade(Cascade.All); 
           }); 

     ManyToOne(s => s.NextProcess, m => 
             { 
              m.Column("NextProcessId"); 
              m.Cascade(Cascade.All); 
             }); 

     ManyToOne(s => s.PreviousProcess, m => 
              { 
               m.Column("PreviousProcessId"); 
               m.Cascade(Cascade.All); 
              }); 
    } 
} 

त्रुटि:

NHibernate.MappingException: Could not determine type for: MES.ProcessManager.SOP.SOPProcess, MES.ProcessManager, for columns: NHibernate.Mapping.Column(id)

मुझे आशा है कि यह कुछ आसान है , यह कॉन्फॉर्मिस्ट मैपिंग का उपयोग कर मेरा पहला प्रोजेक्ट है, इसलिए शायद मैं कुछ दिख रहा हूं।

उत्तर

30

nhusers मेलिंग सूची पर हमारी चर्चा से।

मैं एक ही समस्या में भाग गया।

आपने रिश्ते के प्रकार को परिभाषित नहीं किया है। लाइन एक्शन => action.OneToMany()) देखें; नीचे मानचित्रण में।

public class SportMap : ClassMapping<Sport> 
{ 
    public SportMap() 
    { 
     Id(x => x.Id, map => 
     { 
      map.Column("Id"); 
      map.Generator(Generators.GuidComb); 
     }); 

     Property(x => x.Name, map => 
     { 
      map.NotNullable(true); 
      map.Length(50); 
     }); 

     Bag(x => x.Positions, map => 
     { 
      map.Key(k => k.Column(col => col.Name("SportId"))); 
      map.Cascade(Cascade.All | Cascade.DeleteOrphans); 
     }, 
     action => action.OneToMany()); 

     Property(x => x.CreateDate); 
     Property(x => x.CreateUser); 
     Property(x => x.LastUpdateDate); 
     Property(x => x.LastUpdateUser); 
    } 
} 
+2

+1 'ConventionModelMapper'' को 'ModelMapper' पर स्विच करने से स्विच करते समय मुझे एक ही समस्या का सामना करना पड़ा, इससे मुझे जवाब मिल गया। 'SimpleModelInspector' प्रत्येक संग्रह के लिए उपयोग करने के लिए कार्रवाई को दर्शाता है। – Lukazoid

+2

वही है। साझा करने के लिए धन्यवाद, त्रुटि संदेश बल्कि गूढ़ है। – Dav

+0

तो @ फ़्रैन और tom.dietrich के नोट्स को देखते हुए, "बैग()" और "सेट()" विधियों दोनों के लिए एक क्रिया प्रदान की जानी चाहिए। इस परिस्थिति में आश्चर्यजनक/उपयोगी है कि यह (जाहिर तौर पर वैकल्पिक) छोड़ने के लिए अनुमति है; यदि कोई नहीं, तो अपवाद की घटनाओं को जांच/कम करने के लिए मजबूर होना चाहिए। – user1172173

3

यह पता चला कि समस्या अन्य वर्गों में मेरे सेट मैपिंग में थी। यदि आप मैपिंग के लिए कार्रवाई निर्दिष्ट नहीं करते हैं, तो यह इस (भ्रामक) त्रुटि को फेंकता है।

संबंधित मुद्दे