Как я могу вернуть идентификатор объекту, когда я использую функцию AddMany с SubSonic SimpleRepository. Все мои объекты по-прежнему получают Id = 0 после его использования.
SimpleRepository repository = new SimpleRepository(ConnectionStringName);
repository.AddMany<T>(insertList);
Глядя на источник, я вижу, что:
public void AddMany<T>(IEnumerable<T> items) where T : class, new()
{
if (_options.Contains(SimpleRepositoryOptions.RunMigrations))
{
Migrate<T>();
}
BatchQuery batch = new BatchQuery(_provider);
foreach(var item in items)
{
batch.QueueForTransaction(item.ToInsertQuery(_provider));
}
batch.ExecuteTransaction();
}
Как насчет того, чтобы выбрать пакет для последнего вставленного идентификатора в этой таблице? Может ли это вернуть неправильный идентификатор? Запишу код и вернусь :)
Актуальная проблема
Проблема в том, что мне нравится использовать вставленный идентификатор в другой строке (другой таблице) в качестве fk, возможно, есть способ использовать пакетную вставку, чтобы добавить два разных типа строк и установить для fk-столбца последний вставленный идентификатор другой ряд. Это немного сложно, но я думаю, вы уловили суть:
Insert User
Insert UserAccount -> Set UserAccount.fk_UserId to latest id inserted in User
Insert User
Insert UserAccount -> Set UserAccount.fk_UserId to latest id inserted in User
И так пачкой .. это возможно? Это может быть не менее 10 тыс. Строк, умноженных на 2.