我用Google搜索了我的屁股,似乎无法找到解决问题的方法。 我试图在这里获得演示项目:http://wiki.fluentnhibernate.org/Getting_started 使用sql-server 2008。
我似乎无法正确创建sessionFactory。
代码:
private static ISessionFactory CreateSessionFactory()
{
try
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c
.Server("localhost")
.Database("gisli")
.TrustedConnection()).ShowSql())
.Mappings(m => {
m.HbmMappings.AddFromAssemblyOf<Employee>();
m.HbmMappings.AddFromAssemblyOf<Store>();
m.HbmMappings.AddFromAssemblyOf<Product>();
})
.BuildSessionFactory();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
if(e.InnerException !=null)
Console.WriteLine(e.InnerException.Message);
return null;
}
}
我还试图使用自动化功能,但无法使其正常工作。
我的所有实体类都是公开的。
实体类和映射类的示例:
public class Product
{
public virtual int Id { get; private set; }
public virtual string Name { get; set; }
public virtual double Price { get; set; }
public virtual IList<Store> StoresStockedIn { get; set; }
public Product()
{
StoresStockedIn = new List<Store>();
}
}
public class ProductMap : ClassMap<Product>
{
public ProductMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Price);
HasManyToMany(x => x.StoresStockedIn)
.Cascade.All()
.Inverse()
.Table("StoreProduct");
}
}
编辑:
我也试过这个:
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.Server(".").Database("gisli").TrustedConnection()))
.Mappings(m =>
m.FluentMappings.AddFromAssemblyOf<Program>())
.BuildSessionFactory();
}
编辑: 第二个例子实际上是解决方案。我在一开始就不小心将项目命名为FluentNHibernate,当我重新命名该项目时,它有些混淆了。 任何人都可以看到我搞砸了吗?
真诚 吉斯利
答案 0 :(得分:2)
您的第一个示例实际上并不包含任何流畅的映射,只包含HBM映射。
只要您的映射与Program
位于同一个程序集中,您的第二个示例就可以正常工作。