2009-12-19 22 views
8

Bất kỳ ai cũng có thể giới thiệu công cụ tạo mã Sqlite C# ORM.Bất kỳ đề xuất nào cho việc tạo mã Sqlite C# ORM

Tôi đã tìm thấy khung công tác Habanero, mọi nhận xét về điều đó?

Cảm ơn

CẬP NHẬT

tôi đã đi với cận âm trong trường hợp này. Để giúp đỡ bất cứ ai khác, đây là một ví dụ 'cơ bản' của việc tạo một lớp và sử dụng Subsonic và Sqlite cùng nhau.

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 trông quá lớn so với yêu cầu của tôi trong trường hợp này. Chúng tôi có khuôn khổ riêng của chúng tôi cũng là quá nặng và trên thực tế thay thế nó trong trường hợp này. –

Trả lời

2

Những người khác đã đăng tải về NHibernate (đặc biệt là với Fluent NHibernate) và ADO.Net Entity Framework mà cả hai đều tuyệt vời. Bạn cũng có thể muốn xem SubSonic. Nếu bạn đang xem xét SQLite thì yêu cầu cơ sở dữ liệu của bạn phải khá đơn giản và SubSonic's SimpleRepository option là siêu dễ sử dụng.

+0

Có, yêu cầu của tôi là ver đơn giản, chỉ cần một kho dữ liệu rất nhẹ và thay vì sẽ thử sqlite hơn truy cập. –

+0

SimpleRepository SubSonic trông khá tốt cho các ứng dụng nhỏ và bằng chứng nhanh về khái niệm! Bất kỳ ý tưởng về cách kết nối một SimpleRepository với Sqlite DataProvider hoặc làm thế nào để cấu hình một chuỗi kết nối Sqlite? –

+0

Tôi sẽ đi với Subsonic SimpleRepository, nhờ sự giúp đỡ. (Tôi đã bao gồm một lớp cơ bản thể hiện Sqlite và Subsonic trong câu hỏi) –

0

http://en.wikipedia.org/wiki/NHibernate

http://en.wikipedia.org/wiki/ADO.NET_Entity_Framework

bạn cũng có thể sử dụng LINQ to magic sql thingy

+1

Tôi khá chắc chắn rằng "LINQ to SQL ma thuật thingy" chỉ hoạt động với SQL Server. – itowlson

+0

im không ... nhưng nó kinda sucks anyhow ... điều này sẽ giúp? http://sqlite.phxsoftware.com/ –

+0

LINQ to SQL chỉ dành cho máy chủ MSSQL. Tuy nhiên, khung Entity cung cấp cho bạn một nhà cung cấp LINQ mạnh mẽ để bạn có thể làm về cơ bản những thứ tương tự. –

2

Tôi không biết nếu nó là chính xác những gì bạn đang tìm kiếm; bạn đã thấy cái này chưa?

http://sqlite.phxsoftware.com/

Bạn có thể sử dụng nó với ADO.NET 2.0 hoặc ADO.NET Entity Framework 3.5.

+0

Điều này cũng có vẻ tốt, chỉ cần cố gắng để kết nối SubSonic này ... –

+1

cảm ơn, nhưng liên kết đã chết –

3

Một số người lập bản đồ đối tượng .NET hỗ trợ SQLite. Xem this question một danh sách các ORMs .NET: của những cái được đề cập ở đó, tôi biết rằng và LightSpeed hỗ trợ SQLite, cũng như Khuôn khổ thực thể thực hiện thông qua nhà cung cấp được đề cập trong eWolf's answer. Tôi không chắc chắn về những người khác.

Về mặt tạo mã, LightSpeed ​​và khung thực thể (thông qua System.Data.SQLite) bao gồm các công cụ để nhập giản đồ cơ sở dữ liệu SQLite hiện có; Tôi không chắc về NHibernate. (Tiết lộ: Tôi làm việc cho công ty mà làm Lightspeed; cố gắng để giữ cho thực tế câu trả lời mặc dù)

Các vấn đề liên quan