gpt4 book ai didi

c# - Fluent NH 和接口(interface)映射

转载 作者:太空宇宙 更新时间:2023-11-03 16:55:03 24 4
gpt4 key购买 nike

我真的很困惑,因为我有几个共享使用 FNH 映射的公共(public)接口(interface)的对象,如下所示:

            .Where(t => (t.BaseType == typeof(Entity) || t.BaseType == typeof(PipelineStep))
&& t.Namespace.StartsWith("BigNose.Core.Domain")
&& !t.IsInterface)
.IgnoreBase<Entity>()
.IgnoreBase<PipelineStep>()
.Override<Project>(map => map.HasMany(p => p.Pipelines).Cascade.All())
.Override<ExpectationProcessingStep>(map =>
{
map.ImportType<IPipelineStep>();
map.ImportType<object>();
})
;

现在关于此映射的奇怪之处在于它似乎允许我使用 Criteria api 查询 IPipelineStep,但不允许使用 Linq-to-NH 或通过 HQL。例如:

作品(标准):

    UoW.Session.CreateCriteria(typeof(IPipelineStep), "p")
.Add(Restrictions.Eq("p.Pipeline", SampleData.PipelineB))
.SetMaxResults(10)
.List<IPipelineStep>()
.ToList();

此 Linq 失败:

UoW.Session.Linq<IPipelineStep>()
.Where(p => p.Pipeline == SampleData.PipelineB)
.ToList();

有异常(exception):

System.InvalidOperationException: Could not find entity named: BigNose.Core.Domain.PipelineSteps.IPipelineStep

但是,奇怪的是,没有限制这个工作

UoW.Session.Linq<IPipelineStep>()
.ToList();

使用 HQL 即使没有限制它也会失败:

UoW.Session.CreateQuery("from IPipelineStep p").List<IPipelineStep>()

有异常(exception):

NHibernate.Hql.Ast.ANTLR.QuerySyntaxException: IPipelineStep is not mapped [from IPipelineStep p]

到底发生了什么,我做错了什么。

提前致谢,克里斯。

最佳答案

对于 HQL,您需要导入实际界面,以便它知道。

在 HBM 文件中包含以下内容:

<import class="Name.Space.IPipelineStep, Assembly" />

显然首先要让它有意义。

关于c# - Fluent NH 和接口(interface)映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2416205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com