После некоторых исследований по этой теме я обнаружил, что ошибка возникает в основном, если у вас есть экземпляр db, созданный ранее на вашем локальном SQL-сервере express. Поэтому всякий раз, когда вы обновляете db и пытаетесь обновить db / run некоторый код на db, не выполнив команду Update Database
, используя Package Manager Console
; Прежде всего, вы должны удалить предыдущий db на нашем локальном SQL-Express вручную.
Кроме того, это решение работает, если у вас нет AutomaticMigrationsEnabled = false;
в вашей конфигурации.
Если вы работаете с системой управления версиями (git, svn и т. д.), а некоторые другие разработчики обновляют объекты db на этапе производства, эта ошибка возрастает всякий раз, когда вы обновляете свою базу кода и запускаете приложение.
Как указано выше, для кода на основе кода есть некоторые решения. Однако в некоторых случаях это наиболее практично.
Это демонстрирует, как можно сделать это. Вставьте это в файл сценария Groovy и выполните его. Вы будете видеть, что первое вызывает функции как нормальные. Второй вызов не приводит ни к каким результатам. Наконец, последний шаг в основной печати результаты второго вызова, которые были перенаправлены к ByteArrayOutputStream.
Развлекайтесь!
void doSomething() {
println "i did something"
}
println "normal call\n---------------"
doSomething()
println ""
def buf = new ByteArrayOutputStream()
def newOut = new PrintStream(buf)
def saveOut = System.out
println "redirected call\n---------------"
System.out = newOut
doSomething()
System.out = saveOut
println ""
println "results of call\n---------------"
println buf.toString()
Я не уверен, что Вы подразумеваете "под добавлением вывода к строке", но можно распечатать к стандарту с помощью "печати" или "println".