Пакетная вставка другому провайдеру с помощью subsonic 2.2 - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть IEnumerable, и я хотел бы сделать пакетную вставку (более 240 000 записей). Я просматривал форумы и ТАК и не смог придумать что-то, что работает ...

Другой подвох заключается в том, что мне нужно иметь возможность указать другого поставщика, поскольку эти записи необходимо вставить в базу данных с другой строкой подключения.

По сути, что-то вроде этого:

IEnumerable<MyObject> records = GetRecords();
SubSonicDooHickey.BatchSave(records, "differentSubsonicProvider")

Я знаю, что это не точно, но что-то в этом роде ...

Я пробовал:

var itemsToSaveCollection = new ItemCollection(); // Your collection type here

foreach (var xmlItem in xmlItems)
{
    var item = new Item(); // Your data model type here
    // Set item values from xml
    itemsToSaveCollection.Add(item);
}

itemsToSaveCollection.BatchSave();

(и несколько других), но не смог заставить их работать ... приведенный выше код не сработал, потому что я не смог найти подходящую коллекцию от subsonic с функцией .BatchSave, а также не знаю, как сменить провайдера.

1 Ответ

0 голосов
/ 20 декабря 2011

Оказывается, мне это не нужно, но я смог заставить это работать с помощью команды:

var sql = "insert into foo(col1) values('@Param1'),('@Param2')";

var cmd = new QueryCommand(sql, repositoryName);
cmd.AddParameter("@Param1", "value1", DbType.String);
cmd.AddParameter("@Param2", "value2", DbType.String);
DataService.ExecuteQuery(cmd)
...