Problem EncounteredNHibernate: Wie dieses "Dialekt" Konfigurationsproblem lösen
Zur Laufzeit ich folgenden NHibernate.MappingException
immer erhalten:
"Could not compile the mapping document: GI.InventoryManager.CYB.Mappings.Part.hbm.xml"
Ja, seine Build-Aktion ist auf Embedded Resource
. Die Innerexception sagt:
"Could not find the dialect in the configuration"
Erforderliche Informationen
Hier ist meine Konfigurationsdatei hibernate.cfg.xml
genannt:
<?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>
das ist eigentlich eine Copy-Paste aus den Configuration_Templates Ordner, in dem ich änderte nur die folgende Information:
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"
Und hier ist, wie ich es in meinem Code bin mit:
private void configBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) {
Configuration c = new Configuration();
c.AddAssembly(typeof(Part).Assembly);
lock (_sessionFactory) {
_sessionFactory = c.BuildSessionFactory();
}
}
Optionale Angaben
<?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
}
Umwelt
- Windows 7 Pro;
- Visual Studio 2010 mit Ausrichtung auf .NET 4.0;
- NHibernate 3.0.0.GA;
- SQL Server 2005.
Frage
ich bereits versucht haben, den Dialekt Eigenschaft auf der Linie der Konfiguration zu bringen, und es weder gearbeitet.
Wie löst man dieses Dialektproblem, das ich habe?
Laden Sie den NHibernate-Quellcode herunter, hängen Sie ihn an die App an und versuchen Sie, die Ausnahme zu fangen, wenn Sie geworfen wird. –
haben noch nicht mit NH 3 gearbeitet - ich bin ein wenig überrascht zu lesen Urn: Nhibernate-Konfiguration -___ 2.2 ____ in Ihrer Konfigurationsdatei. – Marijn
irgendeine Lösung darüber? – Kiquenet