C# 流畅的Nhibernate跨模式映射关系

C# 流畅的Nhibernate跨模式映射关系,c#,fluent-nhibernate,schema,fluent-nhibernate-mapping,C#,Fluent Nhibernate,Schema,Fluent Nhibernate Mapping,我有一个对象站点,像这样 public class Site { public virtual int SiteId { get; set; } public virtual Options Options { get; set; } } public class SiteMap : ClassMap<Site> { public SiteMap() { Table("Sites"); HasOne<Opti

我有一个对象站点,像这样

public class Site
{
    public virtual int SiteId { get; set; }

    public virtual Options Options { get; set; }
}
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();
    }
}
我有一个选项对象

public class Options
{
    public virtual int OptionsId { get; set; }

    private int SiteId { get; set; }
    private Site Site { get; set; }
}
这里需要注意的是,我不能向
站点
表中添加任何字段。在过去,我做过这样的映射

public class Site
{
    public virtual int SiteId { get; set; }

    public virtual Options Options { get; set; }
}
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();
    }
}
公共类站点地图:类地图
{
公共网站地图()
{
表(“现场”);
HasOne(x=>x.Options)
.Cascade.All();
}
}
公共类选项映射:类映射
{
公共选项映射()
{
表(“期权”);
Id(discover.Property(“SiteId”))。由.Foreign(“Site”)生成;
HasOne(揭露成员(“网站”))
.受约束的()
.ForeignKey();
}
}
这一直很有效。除了一个小问题,我的选项表在不同的模式中。我添加了
Schema(“MySchema”)
到我的
选项
对象的映射,但是当我尝试获取站点时,我什么也得不到。我很确定我的问题是
.ForeignKey()


当两个相关对象位于不同的模式中时,如何映射该对象?

还有另一个映射选项:

class SiteMap : ClassMap<Site>
{
    public SiteMap()
    {
        Join("MySchema.Options", join =>
        {
            join.KeyColumn("SiteId");
            join.Component(x => x.Options, c => c.Map(x => x.Prop1));
        });
    }
}
classsitemap:ClassMap
{
公共网站地图()
{
Join(“MySchema.Options”,Join=>
{
join.KeyColumn(“SiteId”);
组件(x=>x.Options,c=>c.Map(x=>x.Prop1));
});
}
}

您是否已检查数据库中是否有匹配的站点行?如果它是一个错误的模式,您将得到一个sql异常,说明无法找到该表(在错误的模式中)