-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
База данных в памяти (SQLite) #50
Comments
Есть еще проблема, после решения вопроса с инмемори все таки не получается обратиться к базе из контроллера. Т.е все действия в модуле в момент запуска проходят, но при обращении с контроллера к базе, идет обращение как будто к другому инстансу БД т.е из модуля в DataSourse = "", а вот при вызове из контроллера, там уже указано ":memory:" |
в общем пришлось сначала сделать вызов инициализации базы из контроллера, а не при старте приложения, но это как-то не очень |
подскажите как победить проблему с инициализацией базы при старте и отсутствия ее при дальнейшего вызова из контроллеров |
К базе обращаться в ПриНачалеРаботыСистемы, когда еще ни один контроллер не принимает вызовы. |
Перенес создание базы в основной модуль, такая же ситуация, при обращении из контроллера пишет |
Надо разобраться с shared. Без этого не заработает, треды разные. |
Пробовал "Data Source=:memory:;Mode=Memory;Cache=Shared" пока безрезультатно |
Я тоже порядком времени убил, у меня заработало только с FileUri. Надо понять, почему он не работает в ос.веб. |
FileUri вроде как из Microsoft.Data.Sqlite, точнее из SQLitePCLRaw, версии >= 1.08 а в ос.веб Microsoft.Data.Sqlite был впоследствии заменен на ранее уже применяемый Microsoft.EntityFrameworkCore |
Чтобы было понимание: механики работы с базой данных считай отсутствуют. Нужна помощь в реализации и построении идеологического концепта, который мы предложим сообществу. |
@EvilBeaver есть набросок концепции? |
просто проблема с базой в памяти, с удаленной базой нет вроде проблем |
Изначально думалось, что будет как в 1С - одна ИБ и в ней некий ORM Полагаю, что из "требований к адаптеру" и можно сформулировать то, что должен уметь движок. |
Адаптер-то уже есть. Там нужно пару строк подправить, чтобы он научился работать в вебе (руки не доходят, как обычно). И реализовать lastInsertedId, чтобы не велосипедить пакетные запросы |
Вот не смог найти ни у @nixel2007 ни у @asosnoviy в репах |
А что там про пакетные запросы? Просто lastId есть далеко не во всех СУБД |
@pallid локально в стэшах :/ @EvilBeaver в субд, где нет lastId он обычно возвращается как результат инсерта. Но если и там нет, то да, придётся велосипедить, правда нет уверенности, что на всех типах ключей это получится |
@nixel2007 вот я и говорю, что получение последнего ИД это тоже к адаптеру entity вопрос, а не к движку. А движок должен дать что-то более универсальное (например, результат последнего инсерта) Короче, тут думать надо, но задача решаемая. |
@EvilBeaver а движку вообще не нужен ид последней записи. Он нужен чтобы заполнить ид в сущности, предоставить этот ид - задача адаптера, а как он будет это делать - это уже его головная боль. |
Это я понимаю. Но адаптер-то где ее будет брать? |
адаптер к sqlite (который использует sql из библиотеки) берет его из lastInstertedId, которая у @ret-Phoenix реализован для sqlite. если кто-то возьмется делать адаптер для постгреса, то надо либо научить библиотеку sql возвращать LII для постгреса, либо велосипедить пакетный запрос (либо еще внимательнее курить документацию, авось это есть :) ). |
а в постгрес вроде так
|
Что ты имеешь в виду? |
@EvilBeaver что-то типа |
Интересно, как EntityFramework это делает? |
@ret-Phoenix ну вот и получается, что каждая СУБД имеет свой набор костылей. Я пытался гуглить по MSSQL и вроде бы там вообще нет надежного средства, только условно возможные... |
@EvilBeaver дык а кто отрицал? |
Оставлю work around: |
Использование в памяти невозможно, так как при вызовах методов происходит открытие базы, в случаи с инменори это обозначает создание базы.
The text was updated successfully, but these errors were encountered: