我在谷歌上搜了半天,似乎找不到解决问题的办法。我尝试在这里获得演示项目:使用http://wiki.fluentnhibernate.org/Getting_started来使用sql-server2008。
我似乎无法正确创建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,当我重命名该项目时,它被搞混了。有没有人看到我把事情搞砸了?
真诚的吉斯利
发布于 2011-07-12 20:44:43
您的第一个示例实际上并不包含任何流畅的映射,只包含HBM映射。
您的第二个示例应该可以工作,只要您的映射与Program位于同一程序集中。
https://stackoverflow.com/questions/6663574
复制相似问题