ошибка беглого сопоставления с неверным внешним ключом

Мои беглые отображения:

        HasOne(x => x.User).ForeignKey("fOM_User_Id").Cascade.None();

Мой класс:

public class OrganizationMember
{
    public virtual int MemberId
    {
        get;
        set;
    }

    public virtual int OrganizationId
    {
        get;
        set;
    }

    public virtual int UserId
    {
        get;
        set;
    }

    public  virtual User User { get; set; }

    public virtual string Permissions
    {
        get;
        set;
    }

    public virtual System.DateTime DateAdded
    {
        get;
        set;
    }
}

Я запускаю запрос:

        var assignableusers = _session.Query<OrganizationMember>().Where(x => x.OrganizationId == CurrentProject.OwnerID)
            .Select(x => x.User.Login);

который сгенерировал:

select user1_.fU_Login as col_0_0_ from tOrganization_Members organizati0_ left outer join tUsers user1_ on **organizati0_.fOM_Id**=user1_.fU_UserID where organizati0_.fOM_Organization_Id=7

а так должно было быть select user1_.fU_Login as col_0_0_ from tOrganization_Members organizati0_ left outer join tUsers user1_ on **organizati0_.fOM_User_Id** = user1_.fU_UserID where organizati0_.fOM_Organization_Id = 7

Как я могу исправить это в своих сопоставлениях? с organizati0_.fOM_Id на organizati0_.fOM_User_Id


person Haroon    schedule 09.10.2012    source источник
comment
Вероятно, вам нужно выполнить JoinQueryOver - см. stackoverflow.com/questions/6362317/   -  person Sam    schedule 09.10.2012
comment
@Sam: даже если пользователь является свойством члена организации класса? это кажется немного странным...   -  person Haroon    schedule 09.10.2012
comment
Я бы подумал, что дочерние классы будут получены с родительским классом   -  person Haroon    schedule 09.10.2012
comment
Обычно я использую расширения LINQ NHibernate, которые работают таким образом, но связанный вопрос, похоже, подразумевает, что QueryOver нуждается в явном соединении.   -  person Sam    schedule 09.10.2012


Ответы (1)


Я не думаю, что ваши отношения настоящие один на один.

http://www.jagregory.com/writings/i-think-you-mean-a-many-to-one-sir/

Вместо этого вам, вероятно, следует использовать References (многие к одному).

References(x => x.User).Cascade.None();
person Cole W    schedule 10.10.2012