Пара простых вопросов
От: MozgC США http://nightcoder.livejournal.com
Дата: 18.05.09 20:35
Оценка:
Здравствуйте,

Есть пара простых вопросов:

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);
}

?
Re: Пара простых вопросов
От: ili Россия  
Дата: 19.05.09 02:29
Оценка:
Здравствуйте, MozgC, Вы писали:

MC>1) Можно ли как-то проще сделать (и правильно ли я вообще делаю что command использую отдельно от DbManager)?

эмн... дык еще как можно... здесь читаем, начиная с введения.

MC>2) Может чисто для удобства (лень писать каждый раз) сделать функцию:

я, лично — ленивым стал, если мне стору вызвать надо, я абстрактный аксессор делаю ))) опять таки по ссылку выше =)))
Re[2]: Пара простых вопросов
От: MozgC США http://nightcoder.livejournal.com
Дата: 19.05.09 22:17
Оценка:
Здравствуйте, 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>я, лично — ленивым стал, если мне стору вызвать надо, я абстрактный аксессор делаю ))) опять таки по ссылку выше =)))
Мне кажется что один из плюсов библиотеки в том, что она не навязывает конкретный способ работы и программист может выбрать. Это я к тому что кто хочет мог бы пользоваться абстрактными аксессорами, а кто хочет — вот предлагаемой функцией
Re[3]: Пара простых вопросов
От: ili Россия  
Дата: 20.05.09 08:20
Оценка:
Здравствуйте, MozgC, Вы писали:

MC>Здравствуйте, ili, Вы писали:


MC>Получается в такой ситуации как у меня (вышеописанной) абстрактный аксессор использовать не получится и надо будет либо через .Prepare() либо через ExecuteForEach()?


да, к сожалению, ExecuteForEach не эмитится.

MC>Мне кажется что один из плюсов библиотеки в том, что она не навязывает конкретный способ работы и программист может выбрать. Это я к тому что кто хочет мог бы пользоваться абстрактными аксессорами, а кто хочет — вот предлагаемой функцией


да =) я просто поделился своим ленивым подходом к жизни ))))
Re[4]: Пара простых вопросов
От: MozgC США http://nightcoder.livejournal.com
Дата: 20.05.09 09:05
Оценка:
Здравствуйте, ili, Вы писали:

ili>да, к сожалению, ExecuteForEach не эмитится.

Может сделать?

MC>>Мне кажется что один из плюсов библиотеки в том, что она не навязывает конкретный способ работы и программист может выбрать. Это я к тому что кто хочет мог бы пользоваться абстрактными аксессорами, а кто хочет — вот предлагаемой функцией


ili>да =) я просто поделился своим ленивым подходом к жизни ))))

Так может сделать тогда?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.