我使用ISession.CreateSQLQuery
.
然后我用
SetResultTransformer(new AliasToBeanResultTransformer(typeof(Article))).List<Article>().ToList()
这种方法的问题在于,只有将表一对一地AliasToBeanResultTransformer
映射到类。Article
Article
public class Article : Entity
{
public virtual string Description { get; set; }
}
public class Entity
{
public virtual int Id { get; set; }
}
public class ArticleRepository : Repository<Article>, IArticleRepository
{
private ISession _session;
public ArticleRepository(ISession session) : base(session)
{
_session = session;
}
public List<Article> GetByDescription(string description)
{
return _session
.CreateSQLQuery("EXEC ArticlesByDescription :Description")
.SetString("Description", description)
.SetResultTransformer(new AliasToBeanResultTransformer(typeof(Article)))
.List<Article>().ToList();
}
}
但是我Article
表上的主键被调用ArticleId
,因此AliasToBeanResultTransformer
引发异常。
在“Core.DomainModels.Article”类中找不到属性“ArticleId”的设置器
有没有办法在使用时重用 FluentNhibernateMapping CreateSqlQuery
?
编辑:
Nhibernate 文档描述了如何将已映射的实体与 hbm 文件一起使用。
<sql-query name="GetProductsByCategoryId">
<return class="Product" />
exec dbo.GetProductsByCategoryId :CategoryId
</sql-query>
我真的问自己为什么不能仅仅通过代码来做到这一点?!