Joe*_*ips 1 nhibernate fluent-nhibernate asp.net-mvc-2
我正在尝试使用ASP.NET MVC正确配置Fluent和NHibernate。据我所知,它的配置正确,但是当我访问使用该设置的页面时,没有收到任何数据结果。
我使用的模型称为Brand,数据库表为Brands。
这是我的BrandController的片段:
public ActionResult Index()
{
IRepository<Brand> repo = new BrandRepository();
var brands = repo.GetAll().ToList<Brand>();
return View(brands);
}
Run Code Online (Sandbox Code Playgroud)
这是我的BrandRepository中的摘录:
ICollection<Brand> IRepository<Brand>.GetAll()
{
using (ISession session = NHibernateHelper.OpenSession())
{
var brands = session
.CreateCriteria(typeof(Brand))
.List<Brand>();
return brands;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的NHibernateHelper:
public class NHibernateHelper
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
{
_sessionFactory = Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2008
.ConnectionString(c => c
.FromConnectionStringWithKey("ShoesFullAccess")
)
)
.BuildSessionFactory();
}
return _sessionFactory;
}
}
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的品牌模型:
public class Brand
{
public int Id { get; private set; }
public virtual string Name { get; set; }
public virtual IList<Style> Styles { get; private set; }
public Brand()
{
Styles = new List<Style>();
}
public virtual void AddStyle(Style style)
{
Styles.Add(style);
}
}
Run Code Online (Sandbox Code Playgroud)
最后,这是我的BrandMap:
public class BrandMap : ClassMap<Brand>
{
public BrandMap()
{
Id(x => x.Id);
Map(x => x.Name);
HasMany(x => x.Styles)
.Inverse()
.Cascade.All();
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人能为我指出缩小问题范围的正确方向,我将不胜感激!
您没有将映射添加到配置中。
在此之前添加.BuildSessionFactory():
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<BrandMap>())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3935 次 |
| 最近记录: |