Надо частично заполнить вложенный класс. Делаю так
[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 не хочется
Здравствуйте, 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;
}
ili>это не баг, это фича
ili>мапер правильный.
ili>а SqlQueryBase — безхитростный как сапог — есть мембер маппер и поле не помечено как Map\SqlIgnore\NonUpdatable — пойдет в запрос.
ili>что делать... нууууу....
ili>у меня есть несколько вариантов:
ili>1) использовать ExecuteResultSet или иным, схожим, образом заполнять отношения.
ili>2) допилить булкит, шоб он умел делать так:
Опять допилить, ясно
зы. А над чем там IT колдует? Может уже можно на linq это сделать?
Dog>>зы. А над чем там IT колдует? Может уже можно на linq это сделать?
IT>Пока нет.
А это не очень сложно, после каждого комита писать сюда в отдельную тему что изменилось\появилось нового ... ?

Любопытно же
Здравствуйте, Dog, Вы писали:
Dog>А это не очень сложно, после каждого комита писать сюда в отдельную тему что изменилось\появилось нового ... ?
Любопытно же
Это не сложно, но, думаю, пока мало интересно. Вот прикручу SelectMany и Join, тогда фактически можно будет заняться уже бета тестированием