Сохранение новой записи с использованием EF (или ADO) обратно в базу данных SQL не работает [дубликат]

У меня есть одно и то же предупреждение, вызванное com.google.gms: google-services.

Решение заключается в обновлении classpath com.google.gms: google-services to classpath 'com.google.gms : google-services: 3.2.0 'в файле в build.gradle Project:

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:3.2.0'
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

В Android Studio verion 3.1 зависимые слова complie заменен на реализацию

зависимостями с предупреждением в студии android 3.1

dependencies {
            compile fileTree(dir: 'libs', include: ['*.jar'])
            compile 'com.android.support:appcompat-v7:27.1.0'
            compile 'com.android.support.constraint:constraint-layout:1.0.2'
            testImplementation 'junit:junit:4.12'
            androidTestImplementation 'com.android.support.test:runner:1.0.1'
            androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    }

зависимостями OK в студии android 3.1

    dependencies {
            implementation fileTree(dir: 'libs', include: ['*.jar'])
            implementation 'com.android.support:appcompat-v7:27.1.0'
            implementation 'com.android.support.constraint:constraint-layout:1.0.2'
            testImplementation 'junit:junit:4.12'
            androidTestImplementation 'com.android.support.test:runner:1.0.1'
            androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    }

Генерация градиров для Android Studio 3.1 для новый проект.

Gradel generate by Android Studio 3.1 for new project. [/g3]

Посетите https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html

Подробнее https://docs.gradle.org/current/userguide/declaring_dependencies.html

Удачи вам

7
задан marc_s 6 September 2015 в 14:28
поделиться

2 ответа

Это довольно распространенная проблема. Вы используете | DataDirectory | строка подстановки. Это означает, что при отладке вашего приложения в среде Visual Studio база данных, используемая вашим приложением, находится в папке подпапки BIN\DEBUG (или версии x86) вашего проекта. И это хорошо работает, так как у вас нет какой-либо ошибки, связанной с базой данных и выполняющей операции обновления.

Но затем вы выходите из сеанса отладки и просматриваете свою базу данных через Visual Studio Server Explorer. Это окно имеет другую строку подключения (возможно, указывая на копию вашей базы данных в папке проекта). Вы просматриваете свои таблицы, и вы не видите изменений.

Затем проблема ухудшается. Вы перезапускаете VS, чтобы искать ошибку в своем приложении, но у вас есть файл базы данных, указанный между вашими файлами проекта, а для свойства Copy to Output directory установлено значение Copy Always. На этом этапе Visual Studio копирует исходный файл базы данных из папки проекта в выходную папку (BIN \ DEBUG), и поэтому ваши предыдущие изменения теряются. Теперь ваше приложение снова вставляет / обновляет целевую таблицу и вы не можете найти никаких ошибок в коде. (Теперь я не знаю, являетесь ли вы таким парнем, но после двух или трех раз этого цикла я слышал разные уродливые слова)

Вы можете остановить эту проблему, изменив свойство Copy To Output Directory - Copy If Newer или Never Copy. Также вы можете обновить строку соединения в проводнике сервера, чтобы посмотреть на рабочую копию базы данных или создать второе соединение. Первый по-прежнему указывает на базу данных в папке проекта, а второй указывает на базу данных в папке BIN \ DEBUG. Таким образом, вы можете сохранить исходную базу данных в целях развертывания и изменения схемы, в то время как со вторым соединением вы можете посмотреть на эффективные результаты ваших усилий по кодированию.

EDIT Специальное предупреждение для базы данных MS-Access пользователи. Простой взгляд на таблицу изменяет дату изменения базы данных ТАКЖЕ, если вы ничего не пишете и не меняете. Таким образом, флаг Copy if Newer запускается, и файл базы данных копируется в выходной каталог. С Access лучше использовать Copy Never.

26
ответ дан Steve 26 August 2018 в 05:23
поделиться

Выполнение изменений / сохранение изменений во время сеансов отладки является знакомой темой на форумах SQL CE. Это то, что вытаскивает немало людей. Я отправлю ссылки на исходные статьи ниже, но я хотел вставить ответ, который, кажется, дает наилучшие результаты большинству людей:


У вас есть несколько вариантов, чтобы изменить это поведение. Если ваш файл sdf является частью содержимого вашего проекта, это повлияет на сохранение данных. Помните, что при отладке всего вывода вашего проекта (включая sdf), если в папке bin / debug.

  • Вы можете решить не включать файл sdf как часть своего проекта и управлять
  • Если вы используете «copy if newer», а изменения проекта, которые вы делаете в базе данных, перезаписываете любые изменения времени выполнения / отладки.
  • Если вы используете " Не копируйте ", вам нужно будет указать местоположение в коде (как два уровня выше, где ваша программа запущена).
  • Если у вас есть« Копировать всегда », любые изменения, сделанные во время выполнения, всегда будут перезаписаны

Источник ответа

Вот ссылка на некоторое дальнейшее обсуждение и документацию.

3
ответ дан Ray K 26 August 2018 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: