WPF и EF6 - нераспознанный раздел конфигурации entityFramework - PullRequest
0 голосов
/ 28 мая 2020

Среда : VS2019, .NET 4.8, EF 6, SQLite, WPF App (.NET Framework)

Я следую этому официальному руководству Microsoft , чтобы создайте приложение с первым кодом с именем WPF_EF6 с помощью SQLite. При конфигурации, показанной ниже, я получаю сообщение об ошибке.

Вопрос : что я могу здесь упустить? И как решить проблему? Приложение компилируется нормально, но выдает следующую ошибку времени выполнения:

ConfigurationErrorsException: нераспознанный раздел конфигурации entityFramework. (C: \ DotNet2019 \ WPF \ WPF_EF6 \ bin \ Debug \ WPF_EF6.exe.Config строка 22)

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
    </startup>
    <system.data>
        <DbProviderFactories>
            <remove invariant="System.Data.SQLite.EF6" />
            <add name="SQLite Data Provider (Entity Framework 6)"
                 invariant="System.Data.SQLite.EF6"
                 description=".NET Framework Data Provider for SQLite (Entity Framework 6)"
                 type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
            <remove invariant="System.Data.SQLite" />
            <add name="SQLite Data Provider" invariant="System.Data.SQLite"
                 description=".Net Framework Data Provider for SQLite"
                 type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
        </DbProviderFactories>
    </system.data>
    <connectionStrings>
        <add name="SqlLiteContext" 
             connectionString="Data Source=|DataDirectory|MySQLiteDb.sqlite" 
             providerName="System.Data.SQLite" />
    </connectionStrings>
    <entityFramework>
        <providers>
            <provider invariantName="System.Data.SQLite.EF6"
                      type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
            <provider invariantName="System.Data.SqlClient"
                      type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
            <provider invariantName="System.Data.SQLite"
                      type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
        </providers>
    </entityFramework>
</configuration>

MyDbContex.cs :

namespace WPF_EF6.Model
{
    public class MyDbContex : DbContext
    {
        public MyDbContex() : base("MySQLiteDb")
        {
        }

        public DbSet<MyObj> MyObjs { get; set; }
    }
}

1 Ответ

0 голосов
/ 28 мая 2020

При установке пакета System.Data.SQLite.EF6 Nuget в App.config были внесены некоторые изменения, которые сейчас отсутствуют. Если быть точным, у вас отсутствует элемент <configSections>.

Ваш App.config должен начинаться так:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
    </configSections>
    <!-- ... -->
...