Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > NHibernate


Автор: mullih 14.10.2008, 17:14
Всем доброго времени суток
Возможно что-то не доделал так как не знаю но не могу сделать выборку по полю присоединённой таблицы.

Если делать выборку по полю текущей таблицы то все хорошо, а если по полю присоединённой то говорит что не знает такого поля(

Присоеденяю проектик с базой дабы не кидать листинг 6 файликов

Program.cs
Код

            PlanRepository repository = new PlanRepository();
            List<Plan> plan1 = repository.GetPlansListRange(new DateTime(2008, 10, 13), new DateTime(2008, 10, 14));

            try
            {
                List<Plan> plan2 = repository.GetPlansListFuture(new DateTime(2008, 10, 14), 13, true, 5);
            }
            catch (Exception e)
            {
                Console.WriteLine(e); //could not resolve property: TimeId.StartTime of: ConsoleApplication1.Domain.Plan
            }
            Console.ReadKey();




Заранее благодарен
PS VS2008, база у меня лежит D:\Temp\ConsoleApplication1\DB\Test.mdf

Автор: Magnifico 14.10.2008, 20:52
 NHibernate
Цитата


желаю только добра, денег и благополучия , удали NHibernate со своего компььютера!

Автор: mullih 14.10.2008, 21:11
А что так Hibernate не взлюбился?

Автор: nyxiscoo1 15.10.2008, 23:37
Цитата(mullih @  14.10.2008,  17:14 Найти цитируемый пост)
PS VS2008, база у меня лежит D:\Temp\ConsoleApplication1\DB\Test.mdf

Могли бы и версию NHibernate указать

Код

criteria = criteria.CreateAlias("Plan.TimeId", "Plan_TimeId");

в этой строчке вы создаете алиас, вот его то и надо дальше использовать
Код

public List<Plan> GetPlansListFuture(DateTime from, int periodNumber, bool isCurrentPeriod, int delta)
{
    using (ISession session = NHibernateHelper.OpenSession())
    {
        ICriteria criteria =
            Criteria(session)
                .Add(Restrictions.Between("Plan.Date", from, DateTime.Now.AddMonths(1).Date));

        if (isCurrentPeriod)
        {
            if (delta > 0)
            {
                criteria =
                    criteria.Add(Restrictions.Gt("Plan_TimeId.StartTime", (Int64)(periodNumber - delta)));
            }

            criteria = criteria
                .Add(Restrictions.Gt("Plan_TimeId.FinishTime", (Int64)periodNumber));
        }
        else
        {
            criteria = criteria
                .Add(Restrictions.Gt("Plan_TimeId.StartTime", periodNumber));
        }
        var result = criteria.List<Plan>();
        return new List<Plan>(result);

    }
}


Magnifico откуда такая нелюбовь к NHibernate? очень мощное ОРМ средство, правда документация неочень.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)