我正在尝试使用linq到NHibernate(使用Fluent NHibernate)但是我遇到了linq查询的问题.每次我尝试执行它时,我收到此消息:
" 方法'get_IsReadOnlyInitialized’型'NHibernate.Linq.Util.DetachedCriteriaAdapter’自组装'NHibernate.Linq,版本= 1.1.0.1001,文化=中立,公钥=空’没有实现. "
有人知道如何解决这个问题吗?我尝试使用模型上下文的这个页面的解决方案,但它没有帮助.
这是代码:
using(var session = NHibernateHelper.OpenSession())
{
var informations = (from i in session<Information>() where i.Text=="some text" select i).ToList();
}
Run Code Online (Sandbox Code Playgroud)
一切都很好,如果我不使用where部分,但如果我使用它我得到这个错误.我认为问题出在NHibernate.Linq.dll中
我有这种情况:
public namespace ANamespace
{
public abstract class ABase:IABase
{
//properties
}
public abstract class A : ABase
{
//properties
}
public class A1 : A
{
//properties
}
public class A2 : A
{
//properties
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用此映射代码:
AutoMap
.AssemblyOf<ABase>()
.Where(e => e.Namespace == "ANamespace")
.IncludeBase<A>().IgnoreBase<ABase>();
Run Code Online (Sandbox Code Playgroud)
仅创建一个表(具有ABase和A属性).如果我删除IncludeBase(),则创建A1和A2(包含所有属性).
AutoMap
.AssemblyOf<ABase>()
.Where(e => e.Namespace == "ANamespace")
.IgnoreBase<ABase>();
Run Code Online (Sandbox Code Playgroud)
如何编写映射以在我的数据库中为类A(具有所有A和ABase属性),A1和A2(具有特定属性)而不是ABase类创建表?