2009-12-19 12 views
8

Qualcuno può consigliare uno strumento di generazione del codice ORM Sqlite C#.Eventuali raccomandazioni per la generazione del codice ORM Sqlite C#

Ho trovato il framework Habanero, qualche commento su questo?

Grazie

UPDATE

mi sono andati con Subsonic in questo caso. Per aiutare qualcun altro, ecco un esempio "base" di creazione di una classe e l'uso di Subsonic e Sqlite insieme.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.SQLite; 
using SubSonic; 
using SubSonic.Schema; 
using SubSonic.Repository; 
using SubSonic.DataProviders; 

namespace SubsonicSqliteTest 
{ 
    public class User 
    { 
     public User() 
     { 
      ID = Guid.NewGuid(); 

      // Set Defaults 
      FirstName = String.Empty; 
      LastName = String.Empty; 
      Username = String.Empty; 
      Password = String.Empty; 
      IsAdministrator = 0; 
     } 

     public Guid ID { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Username { get; set; } 
     public string Password { get; set; } 
     public int IsAdministrator { get; set; } 
     public DateTime? CreatedDate { get; set; } 
     public DateTime? LastUpdatedDate { get; set; } 

     public static User Get(Guid id) 
     { 
      string databasePath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Application.ExecutablePath), "Database.db"); 
      IDataProvider provider = ProviderFactory.GetProvider("Data Source=" + databasePath + ";Version=3;New=True;Pooling=True;Max Pool Size=1;", "System.Data.SQLite"); 
      var repository = new SimpleRepository(provider, SimpleRepositoryOptions.RunMigrations); 
      var users = from user in repository.All<User>() 
         where user.ID == id 
         select user; 

      foreach (var user in users) 
      { 
       return user; 
      } 

      return null; 
     } 

     public User Save() 
     { 
      string databasePath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Application.ExecutablePath), "Database.db"); 
      IDataProvider provider = ProviderFactory.GetProvider("Data Source=" + databasePath + ";Version=3;New=True;Pooling=True;Max Pool Size=1;", "System.Data.SQLite"); 
      var repository = new SimpleRepository(provider, SimpleRepositoryOptions.RunMigrations); 
      repository.Add(this); 
      return this; 
     } 
    } 
} 
+0

Habanero sembra troppo grande per le mie esigenze, in questo caso. Abbiamo una nostra struttura che è anche troppo pesante e in effetti la sostituirò in questo caso. –

risposta

2

Altri hanno già postato su NHibernate (in particolare con Fluent NHibernate) e ADO.Net Entity Framework che sono entrambi grandi. Potresti anche voler dare un'occhiata a SubSonic. Se stai considerando SQLite, i requisiti del tuo database devono essere abbastanza semplici e SubSonic's SimpleRepository option è super facile da usare.

+0

Sì, i miei requisiti sono semplici, basta un datastore molto leggero e preferisco provare sqlite di accesso. –

+0

Il SubSonic SimpleRepository è perfetto per le piccole app e le prove rapide! Qualche idea su come connettere un SimpleRepository a Sqlite DataProvider o come configurare una stringa di connessione Sqlite? –

+0

Ho intenzione di andare con Subsonic SimpleRepository, grazie per l'aiuto. (Ho incluso una classe base che dimostra Sqlite e Subsonic nella domanda) –

0
+1

Sono abbastanza sicuro che "LINQ to SQL magic thingy" funziona solo con SQL Server. – itowlson

+0

no ... ma in qualche modo mi fa schifo ... questo aiuta? http://sqlite.phxsoftware.com/ –

+0

LINQ to SQL è solo per server MSSQL. Tuttavia, Entity Framework offre un potente provider LINQ in modo che tu possa fare praticamente le stesse cose. –

2

Non so se è esattamente quello che stai cercando; hai già visto questo?

http://sqlite.phxsoftware.com/

Si può usare con ADO.NET 2.0 o ADO.NET Entity Framework 3.5.

+0

Anche questo sembra buono, solo cercando di connettere SubSonic a questo ... –

+1

grazie, ma il link è morto –

3

Diversi mapper di oggetti relazionali .NET supportano SQLite. Vedere this question un elenco di ORM. NET: di quelli menzionati lì, so che e LightSpeed supportano SQLite, così come l'Entity Framework fa tramite il provider menzionato in eWolf's answer. Non sono sicuro degli altri.

In termini di generazione del codice, LightSpeed ​​e Entity Framework (tramite System.Data.SQLite) includono strumenti per l'importazione di uno schema di database SQLite esistente; Non sono sicuro di NHibernate. (Disclosure:! Io lavoro per l'azienda che fa LightSpeed, cercando di mantenere il fattuale risposta però)

Problemi correlati