Доброго времени суток всем.
0. Я сейчас выбираю архитектурное решение для большого проекта, и рассматриваю различные ORM. BLT произвел на меня сильное впечатление — не часто встретишь такую хорошую, продуманную вещь. Огромный респект разработчику(-кам).
1. Хоть я и читал документации и изучал примеры и исходники — я во многом не успел разобраться за короткий срок. Так что прошу прощения за возможно глупые вопросы.
2. У меня не до конца получилось сделать mapping полей таблицы на объект:
База данных:
create table Bill (
Id_Value Int,
Id_Description Int,
Comment_Value Varchar(255),
Comment_Description Varchar(255),
Sum_Value Int,
Sum_Description Varchar(255)
)
insert into Bill (Id_Value, Comment_Value, Comment_Description) values (1, 'B1', 'Это B1')
insert into Bill (Id_Value, Comment_Value, Comment_Description) values (2, 'B2', 'Это B2')
Прикладной код:
public class Field<T> {
public T Value;
public string Description;
}
[TableName(Name = "Bill")]
public class Bill {
[PrimaryKey]
[MapField(Format = "Id_{0}")]
public Field<int> Id = new Field<int>();
[MapField(Format = "Comment_{0}")]
public Field<string> Comment = new Field<string>();
[MapField(Format = "Sum_{0}")]
public Field<int> Sum = new Field<int>();
}
public class TestDB: DbManager {
public Table<Bill> Bill { get { return GetTable<Bill>(); } }
}
static void Main(string[] args) {
using(TestDB Db = new TestDB()) {
var Q = from B in Db.Bill select B.Comment;
foreach(var F in Q)
Console.WriteLine(F.Value + "--" + F.Description);
}
}
SQL, сгенерированный BLT:
SELECT
[B].[Id_Value],
[B].[Comment_Value],
[B].[Comment_Description],
[B].[Sum_Value],
[B].[Sum_Description]
FROM
[Bill] [B]
Что не устраивает:
Не устраивает, что sql-запрос выбирает ВСЕ поля из таблицы Bill, хотя достаточно только полей Comment_Value и Comment_Description.
В случае же следующего linq-запроса:
var Q = from B in Db.Bill select new {B.Comment, B.Description};
... все проходит чудесно, отбираются только нужные поля.
Вопрос:
Как в моем случае "заставить" BLT отбирать только нужные поля ?
Вопрос не праздный, ибо планируется, что таблица (в моем примере Bill) будет иметь довольно много полей, и не хотелось бы терять на этом производительность.
3. Заранее спасибо