流畅的 Nhibernate 跨模式映射关系
我有一个对象 Site,如下所示
public class Site
{
public virtual int SiteId { get; set; }
public virtual Options Options { get; set; }
}
我有一个选项对象
public class Options
{
public virtual int OptionsId { get; set; }
private int SiteId { get; set; }
private Site Site { get; set; }
}
这里需要注意的是,我无法向 Site
表添加任何字段。过去,我做过这样的映射,
public class SiteMap : ClassMap<Site>
{
public SiteMap()
{
Table("Sites");
HasOne<Options>(x => x.Options)
.Cascade.All();
}
}
public class OptionsMap : ClassMap<Options>
{
public OptionsMap()
{
Table("Options");
Id(Reveal.Property<Options>("SiteId")).GeneratedBy.Foreign("Site");
HasOne<Site>(Reveal.Member<Options, Site>("Site"))
.Constrained()
.ForeignKey();
}
}
效果总是很好。除了一个小问题 - 我的选项表处于不同的模式中。我已将 Schema("MySchema");
添加到我的 Options
对象的映射中,但是当我尝试获取站点时,我什么也没得到。我很确定我的问题是 .ForeignKey();
。
当两个相关对象处于不同模式时如何映射?
I have an object Site, like this
public class Site
{
public virtual int SiteId { get; set; }
public virtual Options Options { get; set; }
}
And I have an options object
public class Options
{
public virtual int OptionsId { get; set; }
private int SiteId { get; set; }
private Site Site { get; set; }
}
The caveat here is that I cannot add any fields to the Site
table. In the past, I have done a mapping like this
public class SiteMap : ClassMap<Site>
{
public SiteMap()
{
Table("Sites");
HasOne<Options>(x => x.Options)
.Cascade.All();
}
}
public class OptionsMap : ClassMap<Options>
{
public OptionsMap()
{
Table("Options");
Id(Reveal.Property<Options>("SiteId")).GeneratedBy.Foreign("Site");
HasOne<Site>(Reveal.Member<Options, Site>("Site"))
.Constrained()
.ForeignKey();
}
}
This always worked great. Except one small snaffu - my options table is in a different schema. I have added Schema("MySchema");
to the mapping for my Options
object, but when I try to get a site, I get nothing back. I am pretty sure my problem is the .ForeignKey();
.
How to I map this when the two related objects are in different schemas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
还有另一个映射选项:
there is another mapping option: