访问数据的最佳方式是什么?
我不认为 OrmLite 支持 SQL Server CE,但是有这个。最好的方法可能是在您的服务中使用SqlCeConnection 。
我可以从 Web.config 访问数据库路径并在 AppHost 类中读取它以创建 IDbConnection 工厂吗?
您应该能够将连接字符串添加到 Web.config 文件。
<add name="Test" connectionString="Data Source=C:\Northwind.sdf" />
如果我对 OrmLite 不支持 SQL CE 的看法是正确的,并且您希望 IDbConnectionFactory
在服务中使用类似的语法,则可以考虑使用DBProviderFactories。
我能想到的最简单(不是最好)的事情就是做下面的事情。
为 SqlCEConnection 创建一个“基本”工厂。这假设您的 Web.config 文件中有连接字符串
public class SqlCeFactory
{
public SqlCeConnection OpenConnection()
{
var conn = new SqlCeConnection(ConfigurationManager.ConnectionStrings["Test"].ToString());
try
{
conn.Open();
return conn;
}
catch (Exception ex)
{
throw ex;
}
}
}
在您的 AppHost 中注册 SqlLCeFactory
public override void Configure(Funq.Container container)
{
container.Register<SqlCeFactory>(new SqlCeFactory());
}
将其注入您的服务中
public class SourceService : ServiceStack.ServiceInterface.Service
{
public SqlCeFactory DbFactory { get; set; }
public object Get(SomeRequest request)
{
using (var con = DbFactory.OpenConnection())
{
//use SqlCeConnection()
}
//more code
}
}