Re: ComplexMapping :)
От: ili Россия  
Дата: 14.05.09 10:25
Оценка: 2 (1)
Здравствуйте, Dog, Вы писали:

Dog>Я так понимаю что update использует закэшированый ObjectMapper, который немного "кривоват" для него. Это баг или так и должно быть ?

Dog>В общем, куда копать ? Руками писать update не хочется

это не баг, это фича
мапер правильный.
а SqlQueryBase — безхитростный как сапог — есть мембер маппер и поле не помечено как Map\SqlIgnore\NonUpdatable — пойдет в запрос.

что делать... нууууу....
у меня есть несколько вариантов:
1) использовать ExecuteResultSet или иным, схожим, образом заполнять отношения.
2) допилить булкит, шоб он умел делать так:

[MapField("Bar_ID",   "Bar.ID")]
[MapField("Bar_Name", "Bar.Name")]
[NonUpdatable("Bar_Name")]
public class Foo
{
    public int ID;
    public Bar Bar;
    public Foo()
    {
        Bar = new Bar();
    }
}
public class Bar
{
    public int ID;
    public string Name;
    public string Name2;
}
Re[5]: ComplexMapping :)
От: IT Россия linq2db.com
Дата: 15.05.09 17:51
Оценка: 2 (1)
Здравствуйте, Dog, Вы писали:

Dog>А это не очень сложно, после каждого комита писать сюда в отдельную тему что изменилось\появилось нового ... ? Любопытно же


Это не сложно, но, думаю, пока мало интересно. Вот прикручу SelectMany и Join, тогда фактически можно будет заняться уже бета тестированием
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: ComplexMapping :)
От: Аноним  
Дата: 14.05.09 17:13
Оценка: :)
Здравствуйте, Dog, Вы писали:

Dog>зы. А над чем там IT колдует? Может уже можно на linq это сделать?


Возьмите IQToolkit и не парьтесь.
Его давно уже можно юзать
ComplexMapping :)
От: Dog  
Дата: 14.05.09 09:49
Оценка:
Надо частично заполнить вложенный класс. Делаю так
[MapField("Bar_ID", "Bar.ID")]
[MapField("Bar_Name", "Bar.Name")]
public class Foo
{
    public int ID;
    public Bar Bar;
    public Foo()
    {
        Bar = new Bar();
    }
}
public class Bar
{
    public int ID;
    public string Name;
    public string Name2;
}

SELECT  Foos.ID,
        Foos.Bar_ID,
        Bars.Name AS [Bar_Name]
FROM    Foos
        INNER JOIN Bars ON Foos.Bar_ID = Bars.ID

После select ломается update.
Запрос выглядит так
UPDATE
    Foos
SET
    [ID] = @ID,
    [Bar_ID] = @Bar_ID,
    [Bar_Name] = @Bar_Name

Я так понимаю что update использует закэшированый ObjectMapper, который немного "кривоват" для него. Это баг или так и должно быть ?
В общем, куда копать ? Руками писать update не хочется
Re[2]: ComplexMapping :)
От: Dog  
Дата: 14.05.09 11:36
Оценка:
ili>это не баг, это фича
ili>мапер правильный.
ili>а SqlQueryBase — безхитростный как сапог — есть мембер маппер и поле не помечено как Map\SqlIgnore\NonUpdatable — пойдет в запрос.
ili>что делать... нууууу....
ili>у меня есть несколько вариантов:
ili>1) использовать ExecuteResultSet или иным, схожим, образом заполнять отношения.
ili>2) допилить булкит, шоб он умел делать так:
Опять допилить, ясно

зы. А над чем там IT колдует? Может уже можно на linq это сделать?
Re[3]: ComplexMapping :)
От: IT Россия linq2db.com
Дата: 14.05.09 13:15
Оценка:
Здравствуйте, Dog, Вы писали:

Dog>зы. А над чем там IT колдует? Может уже можно на linq это сделать?


Пока нет.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: ComplexMapping :)
От: Dog  
Дата: 15.05.09 08:37
Оценка:
Dog>>зы. А над чем там IT колдует? Может уже можно на linq это сделать?
IT>Пока нет.
А это не очень сложно, после каждого комита писать сюда в отдельную тему что изменилось\появилось нового ... ? Любопытно же
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.