NHibernate-无法编译映射文档
这是我第一次使用NHibernate,我从我的朋友那里得到了一个程序的源代码,之后程序运行良好,我尝试添加“Stock.hbm.xml”,如下所示:NHibernate-无法编译映射文档,nhibernate,Nhibernate,这是我第一次使用NHibernate,我从我的朋友那里得到了一个程序的源代码,之后程序运行良好,我尝试添加“Stock.hbm.xml”,如下所示: using System; using System.Collections.Generic; using NBooks.Core.Util; using NBooks.Data.NHibernate; using NHibernate; namespace NBooks.Core.Models { public interface IBaseM
using System;
using System.Collections.Generic;
using NBooks.Core.Util;
using NBooks.Data.NHibernate;
using NHibernate;
namespace NBooks.Core.Models
{
public interface IBaseModel
{
int Id { get; set; }
}
public class BaseModel<T> : IBaseModel
{
IList<string> errors = new List<string>();
public virtual int Id { get; set; }
public virtual bool HasErrors {
get { return errors.Count > 0; }
}
public virtual IList<string> Errors {
get { return errors; }
}
public BaseModel()
{
}
public virtual void Validate()
{
Errors.Clear();
}
public virtual void SaveOrUpdate()
{
ITransaction trans = null;
try {
ISession session = NHibernateHelper.OpenSession();
trans = session.BeginTransaction();
session.SaveOrUpdate(this);
session.Flush();
trans.Commit();
} catch (Exception ex) {
LoggingService.Error(ex.Message);
MessageService.ShowError(ex.Message);
trans.Rollback();
}
}
public virtual void Delete()
{
ITransaction trans = null;
try {
ISession session = NHibernateHelper.OpenSession();
trans = session.BeginTransaction();
session.Delete(this);
session.Flush();
trans.Commit();
} catch (Exception ex) {
LoggingService.Error(ex.Message);
MessageService.ShowError(ex.Message);
trans.Rollback();
}
}
public static T Read(int id)
{
return NHibernateHelper.OpenSession().Load<T>(id);
}
public static IList<T> FindAll()
{
return
NHibernateHelper.OpenSession().CreateCriteria(typeof(T)).List<T>();
}
}
}
`
`
与我的班级“Stock.cs”
使用系统;
使用System.Collections.Generic;
命名空间NBooks.Core.Models
{
公共类股票:基本模型
{
公共虚拟字符串Stock_name{get;set;}
公共虚拟字符串Stock_代码{get;set;}
公共虚拟整数Comp_ID{get;set;}
公共虚拟字符串注释{get;set;}
公共虚拟字符串地址{get;set;}
公共虚拟布尔不活动{get;set;}
公开股()
{
}
公开股票(字符串名称)
{
this.Stock_name=名称;
}
}
公共类StockEventArgs:EventArgs
{
公共股票{get;set;}
公共股票事件args(股票)
{
这个。股票=股票;
}
}
公共委托void StockEventHandler(股票发送者,EventArgs e);
}
基本模型是:
using System;
using System.Collections.Generic;
using NBooks.Core.Util;
using NBooks.Data.NHibernate;
using NHibernate;
namespace NBooks.Core.Models
{
public interface IBaseModel
{
int Id { get; set; }
}
public class BaseModel<T> : IBaseModel
{
IList<string> errors = new List<string>();
public virtual int Id { get; set; }
public virtual bool HasErrors {
get { return errors.Count > 0; }
}
public virtual IList<string> Errors {
get { return errors; }
}
public BaseModel()
{
}
public virtual void Validate()
{
Errors.Clear();
}
public virtual void SaveOrUpdate()
{
ITransaction trans = null;
try {
ISession session = NHibernateHelper.OpenSession();
trans = session.BeginTransaction();
session.SaveOrUpdate(this);
session.Flush();
trans.Commit();
} catch (Exception ex) {
LoggingService.Error(ex.Message);
MessageService.ShowError(ex.Message);
trans.Rollback();
}
}
public virtual void Delete()
{
ITransaction trans = null;
try {
ISession session = NHibernateHelper.OpenSession();
trans = session.BeginTransaction();
session.Delete(this);
session.Flush();
trans.Commit();
} catch (Exception ex) {
LoggingService.Error(ex.Message);
MessageService.ShowError(ex.Message);
trans.Rollback();
}
}
public static T Read(int id)
{
return NHibernateHelper.OpenSession().Load<T>(id);
}
public static IList<T> FindAll()
{
return
NHibernateHelper.OpenSession().CreateCriteria(typeof(T)).List<T>();
}
}
}
使用系统;
使用System.Collections.Generic;
使用NBooks.Core.Util;
使用NBooks.Data.NHibernate;
使用NHibernate;
命名空间NBooks.Core.Models
{
公共接口IBaseModel
{
int Id{get;set;}
}
公共类基模型:IBaseModel
{
IList errors=新列表();
公共虚拟整数Id{get;set;}
公共虚拟布尔错误{
获取{返回错误。计数>0;}
}
公共虚拟IList错误{
获取{返回错误;}
}
公共BaseModel()
{
}
公共虚拟void Validate()
{
错误。清除();
}
公共虚拟void SaveOrUpdate()
{
ITransaction trans=null;
试一试{
ISession session=NHibernateHelper.OpenSession();
trans=session.BeginTransaction();
会话。保存或更新(本);
session.Flush();
trans.Commit();
}捕获(例外情况除外){
LoggingService.Error(例如消息);
MessageService.ShowError(例如Message);
trans.Rollback();
}
}
公共虚拟空间删除()
{
ITransaction trans=null;
试一试{
ISession session=NHibernateHelper.OpenSession();
trans=session.BeginTransaction();
删除(本条);
session.Flush();
trans.Commit();
}捕获(例外情况除外){
LoggingService.Error(例如消息);
MessageService.ShowError(例如Message);
trans.Rollback();
}
}
公共静态T读(int id)
{
返回NHibernateHelper.OpenSession().Load(id);
}
公共静态IList FindAll()
{
返回
NHibernateHelper.OpenSession().CreateCriteria(typeof(T)).List();
}
}
}
构建时一切正常且无错误,运行时出现错误“NHibernate-无法编译映射文档Stock.hbm.xml”。
Thanx提前您的映射中有一个输入错误
<property name="Nots" column="Nots" />
应该是
<property name="Notes" column="Nots" />
我注意到您的XML中有一个输入错误:
<property name="Nots" column="Nots" />
尽管我不认为这是你的错误,但是name='ID'应该是name='ID'?检查内部异常。
<property name="Nots" column="Nots" />
public class StockMap(): ClassMap<Stock>
{
public StockMap(){
Id(x => x.Id).Column("Stock_ID").GeneratedBy.Identity();
Map(x => x.Comp_ID);
Map(x => x.Address);
Map(x => x.Notes);
}
}