我目前正在开发一个Web服务,提供基本的业务对象CRUD操作。该服务将被遗留应用程序使用,这些应用程序目前正在使用直接数据库访问。
由于ServiceStack具有出色的架构,我决定使用ServiceStack而不是WCF。
但是现在我正在考虑是否使用OrmLite、nHibernate或Entity Framework来访问现有的遗留数据库。
ORM的要求如下:
上面的例子展示了一个简单的业务对象。大多数其他对象需要插入、更新、删除、多个连接和带有许多过滤器的读取操作。
由于ServiceStack具有出色的架构,我决定使用ServiceStack而不是WCF。
但是现在我正在考虑是否使用OrmLite、nHibernate或Entity Framework来访问现有的遗留数据库。
ORM的要求如下:
- 支持连接
- 支持存储过程
// @stackoverflow: This is my POCO DTO
public class Country
{
public long Id { get; set; }
public string Alpha2 { get; set; }
public string Alpha3 { get; set; }
public string ShortText { get; set; }
public string LongText { get; set; }
}
public class CountryRepository : ICountryRepository
{
// @stackoverflow: This is the query to join countries with translated names stored in another table
private const string CountriesSql =
@"SELECT C.Id, C.Alpha2, C.Alpha3, L.ShortText, L.LongText FROM COUNTRY AS C INNER JOIN LOCALIZATION AS L ON C.LocId = L.Id WHERE (L.Lang_Id = {0})";
private const string CountrySql = CountriesSql + " AND C.Id={2}";
private IDbConnection db;
public IDbConnectionFactory DbFactory { get; set; }
private IDbConnection Db
{
get { return db ?? (db = DbFactory.Open()); }
}
public List<Country> GetAll()
{
return Db.Select<Country>(CountriesSql, 0);
}
public Country GetById(long id)
{
return Db.SingleOrDefault<Country>(CountrySql, 0, id);
}
}
上面的例子展示了一个简单的业务对象。大多数其他对象需要插入、更新、删除、多个连接和带有许多过滤器的读取操作。