1
我曾與NHiberNate玩過,我得到它與xml definision一起工作,但我被困在我的Map by Code測試中。 我有以下代碼:NhiberNate通過代碼地圖不包含'id'的定義
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode.Conformist;
using NHibernate.Mapping;
namespace NHibernatePets
{
public class Pet
{
virtual public int id { get; set; }
virtual public string PetName { get; set; }
virtual public string Species { get; set; }
virtual public DateTime Birthday { get; set; }
virtual public string Speak()
{
return "Hi. My name is '" + PetName + "' and I'm a " + Species + " born on " + Birthday + ".";
}
}
public class PetMap : ClassMapping<Pet>
{
public PetMap()
{
table("Pet");
Lazy(true);
Id(x => x.Id, map => map.Generator(Generators.Identity));
Property(x => x.Petname, map => map.NotNullable(true));
Property(x => x.Species, map => map.NotNullable(true));
Property(x => x.Birthday, map => map.NotNullable(true));
}
當我按下F5我給了我下面的錯誤mesage
錯誤15「NHibernatePets.Pet」不包含「ID」的定義,並沒有擴展方法「ID」接受型「NHibernatePets.Pet」的第一個參數可以找到(是否缺少using指令或程序集引用?) }
我的計劃是能夠做到在一個查詢PET d atabase
using (ISession session = OpenSession())
{
IQuery query = session.CreateQuery(" FROM Pet");
IList<Pet> pets = query.List<Pet>();
Console.Out.WriteLine("pets.Count = " + pets.Count);
pets.ToList().ForEach(p => Console.WriteLine(p.Speak()));
}
它工作時,我用xml映射表。 我在這裏做錯了什麼?
它解決了這個問題。謝謝 – havmaage
享受強大的NHibernate,先生;) –