J'utilise le cadre d'entités Ado.Net avec du code uniquement (tutoriel à l'adresse: ADO.NET team blog) et je veux être aussi indépendant de la base de données que possible.Impossible de déterminer le nom du fournisseur pour la connexion de type 'System.Data.SqlServerCe.SqlCeConnection'
Dans ma première approche, je veux juste opter pour les bases de données Sql Express et Sql Compact. Avec Sql Express, tout fonctionne bien mais avec Sql Compact, je reçois l'exception mentionnée dans ma question.
Est-ce que quelqu'un sait s'il est possible de se connecter à Sql Compact avec l'approche Code seulement? (! Avec un fichier .edmx généré pour une base de données Sql Compact everthing fonctionne très bien, mais je veux utiliser le code uniquement)
Voici un code:
ma classe qui construit le DataContext:
public class DataContextBuilder : IDataContextBuilder
{
private readonly DbProviderFactory _factory;
public DataContextBuilder(DbProviderFactory factory)
{
_factory = factory;
}
#region Implementation of IDataContextBuilder
public IDataContext CreateDataContext(string connectionString)
{
var builder = new ContextBuilder<DataContext>();
RegisterConfiguration(builder);
var connection = _factory.CreateConnection();
connection.ConnectionString = connectionString;
var ctx = builder.Create(connection);
return ctx;
}
#endregion
private void RegisterConfiguration(ContextBuilder<DataContext> builder)
{
builder.Configurations.Add(new PersonConfiguration());
}
}
La ligne
var ctx = builder.Create (connexion);
lève l'exception.
Le IDataContext est juste une interface simple pour ObjectContext:
public interface IDataContext
{
int SaveChanges();
IObjectSet<Person> PersonSet { get; }
}
Ma chaîne de connexion est configurée dans le app.config:
<connectionStrings>
<add name="CompactConnection" connectionString="|DataDirectory|\Test.sdf"
providerName="System.Data.SqlServerCe.3.5" />
</connectionStrings>
Et l'action de construction est démarré avec
var cn = ConfigurationManager.ConnectionStrings["CompactConnection"];
var factory = DbProviderFactories.GetFactory(cn.ProviderName);
var builder = new DataContextBuilder(factory);
var context = builder.CreateDataContext(cn.ConnectionString);
vous pouvez télécharger Sql Server Compact 4.0 à http://blogs.msdn.com/b/sqlservercompact/archive/2010/ 07/07/introduction-sql-server-compact-4-0-la-prochaine-gen-embedded-database-from-microsoft.aspx – Hobbes1312
Merci beaucoup! J'avais d'abord essayé 4.0, mais j'avais fait une erreur moi-même. Puis j'ai essayé 3.5 et je n'ai obtenu aucun endroit. Puis j'ai encore essayé 4.0, j'avais déjà réparé mon erreur et j'ai vu ta réponse. Merci beaucoup! – Chad
C'était mon problème aussi. L'installation SqlServerCe 4.0 n'a pas mis les DLL dans la liste d'adresses globale, donc je les ai copiées manuellement dans mon projet et les ai ajoutées. Merci. –