Re[3]: Пространство имён Rsdn.Framework.Data
От: Walker США  
Дата: 19.11.03 15:19
Оценка:
Здравствуйте, IT, Вы писали:

IT>Больше заточено на бизнес-объекты. Но дописать что-то ещё проблем нет, нужны только идеи как это сделать.


Вообще-то если честно, то я уже там для себя поломал частично код, сделал 4 commands на объект, в нужные ф-и в качестве параметра вставил енум, определяющий какой тип команды использовать (general, insert, delete, update), ну и собсна дописал ф-и для UpdateDataset. Только вот получилось в конце-концов что-то страшное вот исходник ф-и в DbManager (потом дальше пример использования):
/// <summary>
/// Updates database from the given dataset using provided UPDATE, INSERT and
/// DELETE SQL statements with provided parameters.
/// </summary>
/// <param name="dataSet">The DataSet object used to update database.</param>
/// <param name="tableName">The name of the populating table.</param>
/// <param name="updateCommandType">The <see cref="System.Data.CommandType">CommandType</see> (stored procedure, text, etc.) for update operation.</param>
/// <param name="insertCommandType">The <see cref="System.Data.CommandType">CommandType</see> (stored procedure, text, etc.) for insert operation.</param>
/// <param name="deleteCommandType">The <see cref="System.Data.CommandType">CommandType</see> (stored procedure, text, etc.) for delete operation.</param>
/// <param name="updateCommandText">The command text to execute in case of update operation.</param>
/// <param name="insertCommandText">The command text to execute in case of insert operation.</param>
/// <param name="deleteCommandText">The command text to execute in case of delete operation.</param>
/// <param name="updateCommandParameters">An array of paramters used to executes the update command.</param>
/// <param name="insertCommandParameters">An array of paramters used to executes the insert command.</param>
/// <param name="deleteCommandParameters">An array of paramters used to executes the delete command.</param>
/// <returns>The <see cref="DataSet"/>.</returns>
public DataSet UpdateDataSet(
    DataSet     dataSet,
    string      tableName,
    CommandType updateCommandType,
    CommandType insertCommandType,
    CommandType deleteCommandType,
    string      updateCommandText,
    string      insertCommandText,
    string      deleteCommandText,
    IDbDataParameter[] updateCommandParameters,
    IDbDataParameter[] insertCommandParameters,
    IDbDataParameter[] deleteCommandParameters)
{
    PrepareUpdateCommands(updateCommandType,
        insertCommandType, deleteCommandType,
        updateCommandText, insertCommandText,
        deleteCommandText,
        updateCommandParameters, insertCommandParameters,
        deleteCommandParameters);

    return UpdateDataSetInternal(dataSet, tableName);
}


Ну и пример (GetProviderString() достает SQL query):

using (DbManager db = CreateDataDbManager())
{
db.UpdateDataSet(
    dataSet, "Employees", CommandType.Text, CommandType.Text,
    CommandType.Text, GetProviderString("UpdateEmployee"),
    GetProviderString("InsertEmployee"),
    GetProviderString("DeleteEmployee"),
    new IDbDataParameter[]
    {
        db.Parameter("Title_ID", DbType.Int32, "Title_ID"),
        db.Parameter("FirstName", DbType.String, 50, "FirstName"),
        db.Parameter("LastName", DbType.String, 50, "LastName"),
        db.Parameter("Comments", DbType.String, 100, "Comments"),
        db.Parameter("ID", DbType.Int32, "ID")
    },
    new IDbDataParameter[]
    {
        db.Parameter("Title_ID", DbType.Int32, "Title_ID"),
        db.Parameter("FirstName", DbType.String, 50, "FirstName"),
        db.Parameter("LastName", DbType.String, 50, "LastName"),
        db.Parameter("Comments", DbType.String, 100, "Comments")
    },
    new IDbDataParameter[]
    {
        db.Parameter("ID", DbType.Int32, "ID")
    }
    );
}


Как-то очень длинно получилось, теперь вот думаю как это упростить. Как вариант может быть занести CommandType, CommandText и Parameters в отдельную структуру, чтобы все почище получилось и дефолты чтобы хоть какие чтобы проставлять можно было без несчетного количества перегруженных ф-й...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.