Obtenir Couramment NHibernate pour travailler avec SQLite
Je suis sûr qu'il y est quelque chose de simple, je n'ai pas fait mais je vais essayer de te mettre à l'aise NHibernate pour travailler avec Sqlite sur ma machine.
J'ai utilisé NuGet pour télécharger couramment nhibernate et ajouté à la suite de l'entité et de la cartographie:
public class Customer
{
public virtual string CustomerCode { get; set; }
public virtual string Name { get; set; }
}
public class CustomerMap : ClassMap<Customer>
{
public CustomerMap ()
{
Id(x => x.CustomerCode);
Map(x => x.Name);
Table("tblCustomer");
}
}
Puis la suite de la mise en route avec fluent guide, j'ai ajouté le code suivant pour une Commande de Windows projet:
class Program
{
static void Main(string[] args)
{
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var customer = new Customer { CustomerCode = "123", Name = "Bob" };
session.SaveOrUpdate(customer);
transaction.Commit();
}
}
}
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(
SQLiteConfiguration.Standard
.UsingFile("firstProject.db")
)
.Mappings(m =>
m.FluentMappings.AddFromAssemblyOf<Program>())
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
private static void BuildSchema(Configuration config)
{
// delete the existing db on each run
if (File.Exists("firstProject.db"))
File.Delete("firstProject.db");
// this NHibernate tool takes a configuration (with mapping info in)
// and exports a database schema from it
new SchemaExport(config)
.Create(false, true);
}
}
Enfin, j'ai ajouté l'Sqlite dll à l'aide de NuGet.. mais je reçois l'erreur suivante lorsque vous essayez d'exécuter le programme:
Top Exception:
An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
L'Exception Suivante:
Could not create the driver from NHibernate.Driver.SQLite20Driver, NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4.
Intérieure exception:
Unable to find the requested .Net Framework Data Provider. It may not be installed.
C'est quand il essaie de créer la session de l'usine.
Quelqu'un peut-il aider? Je suis sur un ordinateur 32 bits?
Grâce
Dave
OriginalL'auteur CraftyFella | 2011-04-14
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de deux choses:
System.Data.SQLite
dans votre projet.sqlite3.dll
, mais vous ne pouvez pas ajouter une référence à sqlite3.dll parce que c'est une dll non managée. Il suffit de l'ajouter comme élément de solution et l'installer à copier vers le répertoire de sortie.Chercher un exemple pour SQLite .net 4.0 github.com/gergroen/NHibernate-getting-started-guide
Le lien est cassé.
OriginalL'auteur rebelliard
Vous avez besoin de la .NET fournisseur pour Sqlite. Télécharger ici http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
OriginalL'auteur Vadim
Après l'enquête initiale, je pensais que c'était parce que mon Système.Les données.SQLite assemblée n'était pas chargé en mémoire à l'époque, je l'ai donc inclus un code pour précharger le système.Les données.SQLite assemblée. Cependant lors de l'exécution de la demande, la véritable erreur est survenue:
En mode mixte de l'assemblée est construit contre la version " v2.0.50727 " de l'exécution et ne peut pas être chargé dans la version 4.0 d'exécution sans autres informations de configuration.
pour corriger ce que j'ai changé mon application.config ressembler à ce qui suit:
avec l'important étant useLegacyV2RuntimeActivationPolicy="true"
OriginalL'auteur Eminem
J'ai eu le même problème aujourd'hui, et passer une heure à chercher une solution. De toute façon, j'en ai trouvé un ici:
http://thelongwayback.wordpress.com/2009/11/02/fluent-nhibernate-sqlite-problem-the-idbcommand-and-idbconnection-implementation-in-the-assembly-system-data-sqlite-could-not-be-found/
Fondamentalement, vous aurez à utiliser une ancienne version de SQLite (v1.0.60) à partir d'ici:
http://sourceforge.net/projects/sqlite-dotnet2/files/
Sur une autre note, j'ai eu le même code de travail, hier, sur une machine avec VS2010 SP1. Le même code ne voudrais pas courir aujourd'hui sur une machine sans SP1. Si quelqu'un obtient une chance de tester celui-ci, c'est à dire, par l'installation de VS2010 SP1, laissez-moi savoir les résultats s'il vous plaît.
OriginalL'auteur Karis Sr.
Aucune des solutions ci-dessus, ou toute autre chose que j'ai pu trouver sur Internet, a travaillé pour moi... jusqu'à ce que...
J'ai dû l'installer à la fois le x64 et x86 versions de SQLite (par Vadim lien: http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki), spécifiquement dans cet ordre.
D'abord, j'ai installé la version 32 bits avant la version 64 bits, ce qui n'arrange rien. Sur un coup de tête, j'ai désinstallé et réinstallé dans l'ordre inverse. Maintenant ça fonctionne!
J'ai testé sur 2 machines différentes et vérifié cela a été le correctif pour eux deux. Loufoque, mais efficace.
OriginalL'auteur ParaSwarm
J'ai aussi rencontré ce problème.
Remarqué que le démarreur exemple de projet objectifs .net framework 3.5 et celui que j'ai créé (exercice de projet) est le ciblage .net framework 4.0 profil du client (par défaut de vs2010).
J'ai changé la version cible à 3.5 et j'ai pu travailler sur mon exercice de projet.
OriginalL'auteur joeyend