Вы можете решить проблему, добавив метку времени к имени базы данных.
var myDatabaseName = "mydatabase_"+DateTime.Now.ToFileTimeUtc();
var options = new DbContextOptionsBuilder()
.UseInMemoryDatabase(databaseName: myDatabaseName )
.Options;
Хотя я не видел этого в документации, похоже, в памяти создается только одна база данных с заданным именем. Следовательно, если у вас одно имя, такое исключение может произойти.
Подобное обсуждение есть в этой теме :
optionsBuilder.UseInMemoryDatabase("MyDatabase");
Это создает / использует базу данных с именем «MyDatabase». Если UseInMemoryDatabase вызывается снова с тем же именем, то будет использоваться одна и та же база данных в памяти, что позволит ей совместно использовать несколько экземпляров контекста.
blockquote>И эта проблема github также предлагает такой же подход для добавления уникальной строки с именем базы данных. Надеюсь, это поможет.
Microsoft Access 2000 или позже поддерживает @@ свойство IDENTITY для получения значения поля Autonumber после ВСТАВКИ. (MSDN)
Править: Это - ссылка на подобную статью для.NET 3.5
Попытайтесь изучить глобальные переменные, которые дадут Вам значение идентификационных данных. В SQL Server это:
ВЫБЕРИТЕ @@ идентификационные данные
Также изучите Scope_Identity () функция
Должен смочь ВЫБРАТЬ @@ ИДЕНТИФИКАЦИОННЫЕ ДАННЫЕ даже при том, что необходимо будет использовать второй запрос, чтобы сделать так. Я не думаю, что Доступ MS позволит этому быть объединенным в один запрос.