समस्या उत्पन्न हुईNHibernate: इस "बोली" कॉन्फ़िगरेशन समस्या को हल करने के लिए कैसे करें
रनटाइम पर, मुझे हमेशा निम्न NHibernate.MappingException
मिलता है:
"Could not compile the mapping document: GI.InventoryManager.CYB.Mappings.Part.hbm.xml"
हां, इसकी बिल्ड क्रिया Embedded Resource
पर सेट है। इनरएक्सप्शन का कहना है:
"Could not find the dialect in the configuration"
आवश्यक जानकारी
यहां मेरी विन्यास फाइल hibernate.cfg.xml
है:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">
Server=(local);initial catalog=GI_IM_CYB;Integrated Security=SSPI
</property>
<property name="adonet.batch_size">10</property>
<property name="show_sql">false</property>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="use_outer_join">true</property>
<property name="command_timeout">60</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
</session-factory>
</hibernate-configuration>
जो वास्तव में Configuration_Templates फ़ोल्डर से एक प्रति-पेस्ट है जिसमें मैं केवल निम्न जानकारी बदल दिया है:
private void configBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
Configuration c = new Configuration();
c.AddAssembly(typeof(Part).Assembly);
lock (_sessionFactory) {
_sessionFactory = c.BuildSessionFactory();
}
}
वैकल्पिक जानकारी
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" assembly="GI.InventoryManager.CYB" namespace="GI.InventoryManager.CYB.Types">
<class name="Part" table="Parts" lazy="true">
<id name="Id" column="part_id">
<generator class="native"/>
</id>
<properties name="Description"/>
<properties name="Number"/>
<properties name="InStockQty"/>
<properties name="Cost"/>
</class>
</hibernate-mapping>
public class Part {
#region Private Members
private string _description;
private string _number;
#endregion
#region Constructors
/// <summary>
/// Initializes an instance of the GI.InventoryManager.CYB.Types.Part class.
/// </summary>
public Part() { }
#endregion
#region Properties
/// <summary>
/// Gets or sets the description of this part.
/// </summary>
public virtual string Description {
get {
return _description;
} set {
if (!string.IsNullOrWhiteSpace(value))
_description = value.Trim();
}
}
/// <summary>
/// Gets the underlying datastore unique identifier.
/// </summary>
public virtual int Id { get; private set; }
/// <summary>
/// Gets or sets the user-defined number.
/// </summary>
public virtual string Number {
get {
return _number;
} set {
if (!string.IsNullOrWhiteSpace(value))
_number = value.Trim();
}
}
/// <summary>
/// Gets or sets the in-stock quantity.
/// </summary>
public virtual int InStockQty { get; set; }
/// <summary>
/// Gets or sets the cost.
/// </summary>
public virtual double? Cost { get; set; }
/// <summary>
/// Gets the inventory value for this part.
/// </summary>
/// <remarks>
/// <para>
/// This read-only property returns the product of <see cref="T:InStockQty"/> and <see cref="Cost"/>.
/// In case the <b>Cost</b> property does not have a value, zero is returned.
/// </para>
/// </remarks>
public double InventoryValue {
get {
if (Cost.HasValue)
return InStockQty * Cost.Value;
return 0.0;
}
}
#endregion
#region Methods
#endregion
}
पर्यावरण
-
:
- विंडोज 7 प्रो;
- विजुअल स्टूडियो 2010, .NET 4.0 को लक्षित करना;
- NHibernate 3.0.0.GA;
- SQL सर्वर 2005.
Session Factory: "Removed the NHibernate.Test namespace and let the property for itself"
Dialect: "From MsSql2000Dialect To MsSql2005Dialect"
Connection_String: "I changed the Initial Catalog attribute to input my own database name"
Factory Class: "From LinFu to Castle"
और यहाँ कैसे मैं अपने कोड में यह उपयोग कर रहा हूँ है
प्रश्न
मैंने पहले से ही बोलीप्रणाली को कॉन्फ़िगरेशन की रेखा पर डालने का प्रयास किया है, और यह न तो काम करता है।
मेरे पास इस बोली समस्या को हल करने के लिए कैसे करें?
एनएचबेर्नेट स्रोत कोड डाउनलोड करें, ऐप से संलग्न करें और फेंकने पर अपवाद को पकड़ने का प्रयास करें। –
ने अभी तक एनएच 3 के साथ काम नहीं किया है - मैं आपकी कॉन्फ़िगरेशन फ़ाइल में nurnernate-config -___ 2.2 ____ पढ़ने के लिए थोड़ा आश्चर्यचकित हूं। – Marijn
इसके बारे में कोई समाधान? – Kiquenet