Здравствуйте, elcolex, Вы писали:
E>Написал, все работает. Потом присмотрелся... И думаю: а какого фига не используются bind-переменные?!..
Потому что используешь константы. Используй переменные и будут тебе параметры.
Для информации, инлайнингом параметров при использовании переменных можно управлять через свойство InlineParameters у DataConnection и DataContext.
var name = "John";
// Какой именно запрос будет сгенерирован зависит от значения свойства InlineParameters
db.Persons.Insert(() => new Person {Name = name});
E> Это был для меня прям удар в спину. Тут же ведь значения из полей модели прямо вставляются в sql. Вот это косяк!
Тебе только кажется. Все безопасно, так как строковые параметры при необходимости эскейпятся.
E>И что интересно, метод Insert генерит SQL с bind-переменными!
Вот эти методы, вызываемые напрямую у DataConnection и DataContext генерируют параметризованный sql.
db.Insert(new Person {Name = "John"});
db.InsertWithIdentity(new Person {Name = "John"});
Остальные от того, что ты используещь: константы или переменные (в последнем еще зависит от свойства InlineParameters).
E>Но он не очень удобный, потому что не возвращает ид записи.
Есть метод:
db.InsertWithIdentity(new Person {Name = "John"});
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>