Здравствуйте, 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 в отдельную структуру, чтобы все почище получилось и дефолты чтобы хоть какие чтобы проставлять можно было без несчетного количества перегруженных ф-й...