Laden...

EF code first Fehlermeldungen

Erstellt von Balaban_S vor 12 Jahren Letzter Beitrag vor 12 Jahren 4.630 Views
Balaban_S Themenstarter:in
194 Beiträge seit 2006
vor 12 Jahren
EF code first Fehlermeldungen

SqlCe.40 EntityFrameWork 4.3.1 Code first Windows.Forms

Hallo und frohe Ostern

Ich habe eine Anwendung bei der plötzlich die Fehlermeldung:

Fehlermeldung:
Der Typeninitialisierer für "System.Data.Entity.Internal.AppConfig" hat eine Ausnahme verursacht.

bei der initilaisierung des DBContextes auftaucht.

Bis vor kurzem funktionerte alles Wunderbar. Der Fehler kam aus dem Nichts.
Der Initialisierungscode:


StoreClientEntities db=new StoreClientEntities();
...

nichts weiter.

Zuerst arbeitete ich so:


StoreClientEntities db;
...
protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            db = new StoreClientEntities();
...
        }

Als dann nichts mehr ging und alle Debug-Haltepunkte übersprungen wurden wechselte ich zur oberen Version und erhielt dann eben die Fehlermeldung.

Hier noch die config:


<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="StoreClientEntities"
     connectionString="Data Source=|DataDirectory|\StoreClientEntities.sdf"
     providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  </configSections>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.4.0" />
      <add name="Microsoft SQL Server Compact Data Provider 4.0"
           invariant="System.Data.SqlServerCe.4.0"
           description=".NET Framework Data Provider for Microsoft SQL Server Compact"
           type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
  </system.data>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

Was kann dies verursachen?

Gruss

16.842 Beiträge seit 2008
vor 12 Jahren

Generell solltest Du dort einen Context erstellen, wo Du auch wirklich drauf zugreifen musst.
Dass der afehler mit Deinem Load direkt was zutun hat bezweifel ich ein wenig.

Scheint eher so, als ob Du eventuell zwei EF Versionen mischst; oder falsche Metadaten hast, oder der Connectionstring nicht mehr stimmt - oder das DB File kaputt ist.
Wie wich das EF aber generell bei CE verhaelt weis ich nicht.

Balaban_S Themenstarter:in
194 Beiträge seit 2006
vor 12 Jahren

Zuerst einmal vielen dank für die Antwort
Ok, das mit den EF Versionen werd ich überprüfen, die db hab ich mittlerweile gelöscht, somit kann es nicht (mehr) am connectionstring und der DB liegen.Und wo gibt es denn bei codefirst metadaten?

Das mit den Ressourcen schonen ist so eine Sache, da CE kein Verbindungspooling kennt und sowieso singleuseranwendung ist, erlaube ich mir nur einmal die Verbindung zu öffnen und beim Beenden zu schliessen.

Gruss

16.842 Beiträge seit 2008
vor 12 Jahren

Ich hatte überlesen, dass es CodeFirst ist 😉 War aber auch eine allgemeine Antwort.

Kenne CE nicht; nie mit gearbeitet. Weiß nicht wie hier die Resourcenverwaltung ist; aber generell hat man die Verbindung halt nur dort, wo man sie auch wirklich braucht.
Bedenke in diesem Zusammenhang auch (allgemein) das Thema Threads, und dass das EF nicht Thread-sicher ist - ganz egal obs ein User ist oder 50 😃

Ich kann Dich beim Thema CE und dem Fehler hier Dich höchstens auf den richtigen Weg schubsen; aus versehen. Mit Sicherheit kann ich Dir nicht sagen, woran dies liegt.

Wenn man aber nach dem Fehler Google befragt, so sind die ersten Treffer allesamt Bug Reports in Zusammenhang mit dem EF 4.3.1, das auch Du hast.
Ein Patch scheint es noch nicht zu geben; wird auch nur davon gesprochen, dass es in ein paar Wochen einen Patch geben wird (Stand Februar).

Balaban_S Themenstarter:in
194 Beiträge seit 2006
vor 12 Jahren

Ich habe jetzt vorübergehend (auf) normales EF umgestellt und es klappt ohne Probleme. Zum Glück war es nichts grosses. Code First auf dem Desktop?
(momentan) Besser nicht 😉

Gruss

Balaban_S