我正在使用c#和System.Data.SQLite 我有一些我想在运行时在SQLite中生成表的类,但我不想对每个类的SQL字符串进行硬编码。 我想知道,这样做的最佳方法是什么? 我尝试向我的类和类属性添加属性,希望有一些东西可以为我创建SQL字符串但是...... 这是一个例子:
[Table(Name = "tblDocument")]
public class Document
{
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public long DocumentId { get; set; }
[Column(CanBeNull = true)]
public string File { get; set; }
}
要在SQLite中将其创建为表格,我需要生成如下内容:
string CreateSqlString =
@"CREATE TABLE [tblDocument] (" +
@"[DocumentId] INTEGER PRIMARY KEY NOT NULL," +
@"[File] TEXT NOT NULL)";
提前致谢。
答案 0 :(得分:1)
你是否正在寻找像SubSonic这样的东西。它可以在启用迁移的情况下运行,并为您的类生成表。
假设您引用了Castle.Core.dll,SubSonic.Core.dll和System.Data.SQLite.DLL
class Program
{
private const string ConnectionString = @"Data Source=c:\subsonic.db";
private const string ProviderString = @"System.Data.SQLite";
private static IDataProvider provider = ProviderFactory.GetProvider(ConnectionString, ProviderString);
private static SimpleRepository repo = new SimpleRepository(provider, SimpleRepositoryOptions.RunMigrations);
static void Main(string[] args)
{
var demo = new Demo { Name = "Test Demo", LaunchDate = DateTime.Now };
repo.Add(demo);
}
class Demo
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime LaunchDate { get; set; }
}
}
App.config应为
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.data>
<DbProviderFactories>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>