Live

  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  4 Posts :: 1 Stories :: 55 Comments :: 0 Trackbacks

公告

昵称:一唯
园龄:5年10个月
粉丝:0
关注:0

搜索

 
 

常用链接

最新评论

今天下来NHibernate1.0.2.0,参照Examples自己写写。
dll引用,配置文件,映射类,映射文件都OK。
主要代码如下:
 1Configuration cfg = new Configuration();
 2cfg.AddAssembly("NhibernateTest");
 3
 4ISessionFactory factory = cfg.BuildSessionFactory();
 5ISession session = factory.OpenSession();
 6ITransaction transaction = session.BeginTransaction();
 7
 8User newUser = new User();
 9newUser.Id = 1;
10newUser.UserName = "nicole";
11newUser.Password = "abc123";
12session.Save(newUser);
13transaction.Commit();
14session.Close();
执行到第12行代出错: Unknown entity class: NhibernateTest.User
好像是没有映射好。
将第二行的代码换成:
cfg.AddXmlFile("NhibernateTest.User.hbm.xml");
就可以了。换成:
cfg.AddClass(typeof(User));
也不行,错误为:Resource: NhibernateTest.User.hbm.xml not found。“NhibernateTest.User.hbm.xml ”文件放在bin下或者项目根目录都没用。
文档说AddAssembly会把所有.hbm.xml文件都加载,为什么不行?
AddClass方法的话是在什么地方寻找相对于的.hbm.xml文件呢?
posted on 2006-03-21 16:53 一唯 阅读(1310) 评论(3) 编辑 收藏

Feedback

#1楼[楼主]2006-03-21 17:12一唯      
sorry,自己看文档不认真:If VisualStudio.NET or NAnt is used to build the Assembly then make sure that the hbm.xml files are added as Embedded Resources
作为内嵌资源添加映射文件之后,AddAssembly方法能够读取所有的映射文件啦。
不过AddClass还是提示NhibernateTest.User.hbm.xml not found。????
 回复 引用 查看   
User是关键字造成的
 回复 引用   
你好,我的测试例子也调不过,请问怎么改:
**********错误提示***************

这是一个意外的标记。标记应为“NAME”。 行 1,位置 37。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Xml.XmlException: 这是一个意外的标记。标记应为“NAME”。 行 1,位置 37。

源错误:


行 55: // {
行 56: Configuration cfg = new Configuration();
行 57: cfg.AddAssembly("NHClass");
行 58: //cfg.AddXmlFile("NHClass.Poster.hbm.xml");
行 59: ISessionFactory factory = cfg.BuildSessionFactory();



*****************完整代码****************

Configuration cfg = new Configuration();
cfg.AddAssembly("NHClass");
ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
ITransaction trans = session.BeginTransaction();

Poster post = new Poster();
post.PostID = Guid.NewGuid();
post.Title = "hello Nibernate";
post.Content = "foo test";
post.Creator = "foo";
post.LastUpdator = "bar";
post.CreateDate = System.DateTime.Now.Date;
post.LastUpdateDate = System.DateTime.Now.Date;

session.Save(post);
trans.Commit();
session.Close();


******************Post实体类**************

private Guid postId;
private string title;
private string content;
private string creator;
private DateTime createDate = System.DateTime.Now;
private string lastUpdator;
private DateTime lastUpdateDate = System.DateTime.Now;

public Guid PostID
{
get { return this.postId; }
set { this.postId = value; }
}

public string Title
{
get { return this.title; }
set { this.title = value; }
}

public string Content
{
get { return this.content; }
set { this.content = value; }
}

public string Creator
{
get { return this.creator; }
set { this.creator = value; }
}

public DateTime CreateDate
{
get { return this.createDate; }
set { this.createDate = value; }
}

public string LastUpdator
{
get { return this.lastUpdator; }
set { this.lastUpdator = value; }
}

public DateTime LastUpdateDate
{
get { return this.lastUpdateDate; }
set { this.lastUpdateDate = value; }
}
 回复 引用 查看