Entity Framework model uses for different vendors

I have an entity model 4.0 that uses the SqlServerCE database as its provider. On the server, I want to use the same project and just disconnect the connection string in order to use the actual SqlServer database.

Here is my connection string

<add name="Entities"
        connectionString="metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;
provider=System.Data.SqlClient;
provider connection string=&quot;
Data Source=xxxx;
Initial Catalog=xxxx;User ID=xxxx;Password=xxxx;&quot;" 
providerName="System.Data.EntityClient" />

When I try to query the Entity model, I get the following error:

SqlCeCommand.CommandTimeout does not support non-zero values.

If I set the context timeout to 0, it will say

 Unable to cast object of type 'System.Data.SqlClient.SqlConnection'
 to type 'System.Data.SqlServerCe.SqlCeConnection'.

How to install a provider from SqlServerCE to SqlClient?

+3
source share
2 answers

, . , :

Entity Framework

VistaDB SQL Server, .

+4

, - SQL Server, SQL Server CE. , Kev, , .

, " ", :

    public void SetupOnce()
    {
        var assembly = typeof(TContext).Assembly;
        var ssdlRes = assembly.GetManifestResourceNames().Single(e => e.EndsWith("ssdl")); //TODO handle multiple contexts

        using (var stream = assembly.GetManifestResourceStream(ssdlRes))
        using (var reader = new StreamReader(stream))
        {
            var result = reader.ReadToEnd().Replace("Provider=\"System.Data.SqlClient\"", "Provider=\"System.Data.SqlServerCe.4.0\"");
            File.WriteAllText(ssdlRes, result);
        }

        Context = new TContext();
    }

:

<add name="DomainDbContext" 
     connectionString="metadata=res://*/Entities.Entities.csdl|./Entities.Entities.ssdl|res://*/Entities.Entities.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;Data Source=StraDaLB_DM.sdf&quot;" 
     providerName="System.Data.EntityClient" />

, - -;)

+3

Source: https://habr.com/ru/post/1770010/


All Articles