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: 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[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[3]: ComplexMapping :)
От: Аноним  
Дата: 14.05.09 17:13
Оценка: :)
Здравствуйте, Dog, Вы писали:

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


Возьмите IQToolkit и не парьтесь.
Его давно уже можно юзать
Re[4]: ComplexMapping :)
От: Dog  
Дата: 15.05.09 08:37
Оценка:
Dog>>зы. А над чем там IT колдует? Может уже можно на linq это сделать?
IT>Пока нет.
А это не очень сложно, после каждого комита писать сюда в отдельную тему что изменилось\появилось нового ... ? Любопытно же
Re[5]: ComplexMapping :)
От: IT Россия linq2db.com
Дата: 15.05.09 17:51
Оценка: 2 (1)
Здравствуйте, Dog, Вы писали:

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


Это не сложно, но, думаю, пока мало интересно. Вот прикручу SelectMany и Join, тогда фактически можно будет заняться уже бета тестированием
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.