Здравствуйте,
Есть пара простых вопросов:
1) Можно ли как-то проще сделать (и правильно ли я вообще делаю что command использую отдельно от DbManager)?
IDbCommand command = db.SetSpCommand(
"AddPartNumberMask",
db.Parameter("?PartGroupID_", groupID),
db.Parameter("?Mask_", null)).Command;
foreach (var mask in masks)
{
((IDbDataParameter)command.Parameters["?Mask_"]).Value = mask.Replace("*", "%");
command.ExecuteNonQuery();
}
2) Может чисто для удобства (лень писать каждый раз) сделать функцию:
class DbManager { ...
public object ExecuteStoredFunction(string storedFunctionName, params object[] parameters)
{
return SetSpCommand(storedFunctionName, parameters).ExecuteScalar(ScalarSourceType.ReturnValue);
}
?
Здравствуйте, MozgC, Вы писали:
MC>1) Можно ли как-то проще сделать (и правильно ли я вообще делаю что command использую отдельно от DbManager)?
эмн... дык еще как можно...
здесь читаем, начиная с введения.
MC>2) Может чисто для удобства (лень писать каждый раз) сделать функцию:
я, лично — ленивым стал, если мне стору вызвать надо, я абстрактный аксессор делаю ))) опять таки по ссылку выше =)))
Здравствуйте, ili, Вы писали:
MC>>1) Можно ли как-то проще сделать (и правильно ли я вообще делаю что command использую отдельно от DbManager)?
ili>эмн... дык еще как можно... здесь читаем, начиная с введения.
Да, видимо я первый раз невнимательно все прочитал, второй раз пролистал — больше запомнил.
Я правильно понимаю что со списком не получится передать список объектов чтобы ХП выполнялась в цикле для каждого объекта? Т.е. как-то так:
public abstract class PartGroupAccessorBase : DataAccessor
{
[SprocName("AddPartNumberMask")]
public abstract void AddPartMasks(IList<PartNumberMask> list);
}
DataAccessor.CreateInstance<PartGroupAccessorBase>().AddPartMasks(list);
Получается в такой ситуации как у меня (вышеописанной) абстрактный аксессор использовать не получится и надо будет либо через .Prepare() либо через ExecuteForEach()?
MC>>2) Может чисто для удобства (лень писать каждый раз) сделать функцию:
ili>я, лично — ленивым стал, если мне стору вызвать надо, я абстрактный аксессор делаю ))) опять таки по ссылку выше =)))
Мне кажется что один из плюсов библиотеки в том, что она не навязывает конкретный способ работы и программист может выбрать. Это я к тому что кто хочет мог бы пользоваться абстрактными аксессорами, а кто хочет — вот предлагаемой функцией
Здравствуйте, MozgC, Вы писали:
MC>Здравствуйте, ili, Вы писали:
MC>Получается в такой ситуации как у меня (вышеописанной) абстрактный аксессор использовать не получится и надо будет либо через .Prepare() либо через ExecuteForEach()?
да, к сожалению, ExecuteForEach не эмитится.
MC>Мне кажется что один из плюсов библиотеки в том, что она не навязывает конкретный способ работы и программист может выбрать. Это я к тому что кто хочет мог бы пользоваться абстрактными аксессорами, а кто хочет — вот предлагаемой функцией
да =) я просто поделился своим ленивым подходом к жизни ))))
Здравствуйте, ili, Вы писали:
ili>да, к сожалению, ExecuteForEach не эмитится.
Может сделать?
MC>>Мне кажется что один из плюсов библиотеки в том, что она не навязывает конкретный способ работы и программист может выбрать. Это я к тому что кто хочет мог бы пользоваться абстрактными аксессорами, а кто хочет — вот предлагаемой функцией
ili>да =) я просто поделился своим ленивым подходом к жизни ))))
Так может сделать тогда?