Ich habe die folgende Problemumgehung implementiert, bis Mono die Entity Framework-Metadatenartefakte einbettet
- Schritt 1 – Aktualisieren Sie die Metadatenartefaktverarbeitungseigenschaft Ihres EntityFramework-Modells von "In Ausgabeassembly einbetten" zu "In Ausgabeverzeichnis kopieren"
Dadurch werden die Metadatenartefaktdateien in den bin-Ordner des Projekts kopiert, das die .edmx(Project1)
enthält-
Schritt 2:Fügen Sie dem verweisenden Projekt (Project2) die folgenden Post-Build-Ereignisse hinzu, um die Metadatenartefaktdateien in seinen Bin zu kopieren. Sie können sie am Ende der CSPROJ-Projektdatei hinzufügen. Ersetzen Sie Projekt1 mit dem Namen Ihres Projekts.
<PropertyGroup> <PostBuildEvent Condition=" '$(OS)' != 'Unix' ">copy /Y "$(ProjectDir)..\Project1\bin\Debug\Models\*" "$(ProjectDir)\bin\Debug\" </PostBuildEvent> <PostBuildEvent Condition=" '$(OS)' == 'Unix' ">cp -a "$(ProjectDir)../Project1/bin/Debug/Models/." "$(ProjectDir)bin/Debug/" </PostBuildEvent> </PropertyGroup>
-
Schritt 3 – Aktualisieren Sie Ihre Verbindungszeichenfolge
von
<add name="EntityframeworkTestEntities" connectionString="metadata=res://*/EntityFrameworkTestModel.csdl|res://*/EntityFrameworkTestModel.ssdl|res://*/EntityFrameworkTestModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=EntityframeworkTest;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
zu
<add name="EntityframeworkTestEntities" connectionString="metadata=EntityFrameworkTestModel.csdl|EntityFrameworkTestModel.ssdl|EntityFrameworkTestModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=EntityframeworkTest;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />