Вставьте значения в Fluent Migrator с последовательностью - PullRequest
0 голосов
/ 14 июня 2019

Есть ли способ вставить строку, используя Fluent Migrator с моей последовательностью в базе данных?

Ex. Я хочу выполнить эту команду:

insert into TEST_TABLE (ID, DUMMY) values (seq_test.nextval, 'TEST') 

Моя последовательность:

seq_test

что я пробовал:

Insert.IntoTable("TEST_TABLE").Row(new { /*Sequence Here*/, DUMMY = "Test" });

Что я могу сделать, чтобы получить мою последовательность следующего значения?

любая помощь будет оценена

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 июля 2019

вставить в значения TEST_TABLE (ID, DUMMY) (seq_test.nextval, 'TEST')

Если это последовательность оракула

RawSql.Insert("seq_test.nextval from dual"),  should do mix.

Insert.IntoTable("User").Row(new { ID = RawSql.Insert("seq_test.nextval from dual"),DUMMY ='test' });

или

Insert.IntoTable("User").Row(new { ID = RawSql.Insert("select seq_test.nextval"),DUMMY ='test' });

В результате в столбце Имя пользователя будет установлено текущее имя пользователя. Имейте в виду, что при использовании специфичной для сервера sql функции, такой как CURRENT_USER, это выражение больше не является переносимым и не будет работать с другой базой данных (например, PostgreSQL).

Raw SQL helper При использовании выражения Insert.IntoTable или при установке значения столбца по умолчанию все данные строки, являющиеся строкой, заключаются в кавычки и сохраняются в базе данных. Если вы хотите использовать вместо этого выражение sql, то вам нужен вспомогательный класс RawSql.

For example, if I want to use a Microsoft SQL Server function like CURRENT_USER and try to insert like this:

Insert.IntoTable("Users").Row(new { Username = "CURRENT_USER" });
The result will be that the Username column will get the value CURRENT_USER as a string. To execute the function you can use the RawSql.Insert method like this:

Insert.IntoTable("User").Row(new { Username = RawSql.Insert("CURRENT_USER") });
This will result in the Username column being set to the current username. Be aware that by using an sql server specific function like CURRENT_USER that this expression is not portable anymore and will not work against another database (like PostgreSQL).
0 голосов
/ 03 июля 2019
Insert.IntoTable("TEST_TABLE ").Row(new { SEQ_NO = RawSql.Insert(0), DUMMY = "TEST"});
...