создание в запросе в nhibernate с использованием linq - PullRequest
0 голосов
/ 13 мая 2011

я хочу создать что-то вроде

SELECT * FROM dbo.localconveyance_details ГДЕ ваучерNo IN (ВЫБЕРИТЕ voucherNo FROM dbo.localconveyance_master WHERE emp_code = '48'

с использованием linq в беглом nhibernate

пробовал что-то подобное

IList<LocalConveyanceDetails> detailslist = session.Query<LocalConveyanceDetails>()
                    .Where(x => x.LocalConveyanceMaster.emp_code == e_id).ToList();

, но оно не работает ... может кто-нибудь сказать, что будет фактическим запросом?

Обновление:

Сущностикоторые я использовал:

 public class LocalConveyanceMaster
{
    public virtual String voucherNo { get; set; }
    public virtual DateTime voucher_date { get; set; }
    public virtual String emp_code { get; set; }
    public virtual String emp_name { get; set; }
    public virtual String project_id { get; set; }
    public virtual DateTime submitDate { get; set; }
    public virtual String to_be_approved_by { get; set; }
    public virtual String created_by { get; set; }
    public virtual Decimal conveyance_total { get; set; }
    public virtual Decimal approved_amount { get; set; }
    public virtual String approved { get; set; }

    public virtual ProjectMaster Project { get; set; }
    public virtual ICollection<LocalConveyanceDetails> LocalConveyanceDetails { get; set; }
}
public class LocalConveyanceDetails
{
    public virtual String LcDetailsId { get; set; }
    public virtual String voucherNo { get; set; }
    public virtual String serialNo { get; set; }
    public virtual String From_Project_Id { get; set; }
    public virtual String To_Project_Id { get; set; }
    public virtual DateTime particularsDate { get; set; }
    public virtual Decimal particularsAmount { get; set; }
    public virtual String particulars { get; set; }

    public virtual LocalConveyanceMaster LocalConveyanceMaster { get; set; }
}

и отображения:

 public LocalConveyanceMap()
    {
        Table("localconveyance_master");
        Id(x => x.voucherNo).Column("voucherNo");
        Map(x => x.voucher_date);
        Map(x => x.emp_code);
        Map(x => x.emp_name);
        Map(x => x.project_id);
        Map(x => x.submitDate);
        Map(x => x.to_be_approved_by);
        Map(x => x.created_by);
        Map(x => x.conveyance_total);
        Map(x => x.approved_amount);
        Map(x => x.approved);

        References(x => x.Project)
            .Column("project_id")
            .ForeignKey("project_id");

        HasMany(x => x.LocalConveyanceDetails)
            .KeyColumn("voucherno").AsSet();

    }
 public LocalConveyanceDetailsMap()
    {
        Table("Localconveyance_details");
        Id(x => x.LcDetailsId).Column("LcDetailsId");
        Map(x => x.voucherNo);
        Map(x => x.serialNo);
        Map(x => x.From_Project_Id);
        Map(x => x.To_Project_Id);
        Map(x => x.particularsDate);
        Map(x => x.particularsAmount);
        Map(x => x.particulars);


        References(x => x.LocalConveyanceMaster)
            .PropertyRef(x => x.voucherNo).Column("voucherno")
            .ForeignKey("voucherno");

    }

ошибка, которую я получаю:

Исключение: {"Ошибка выполнения LoadByUniqueKey [SQL: SQL недоступен] "}

InnerException: {" Указанный ключ отсутствует в словаре. "}

1 Ответ

0 голосов
/ 07 ноября 2013

это происходит, когда один или несколько членов класса являются видом другого класса [отношения]. У меня та же проблема, и я удаляю этих участников и добавляю новых участников для каждого из них в этой форме:

публичный виртуальный int? [связанный класс] id {get; set;}

exmaple:

публичный виртуальный int? PersonId {get; set;}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...