我从根本上厌倦了编写数据访问层。我认为这是一种无聊而毫无意义的努力。我设想了一个开发环境,我可以在其中创建我的实体/模型并开始构建应用程序。写DAL,程序等所花费的时间......只是让我对项目充满了热情。
我想要的是我的数据的通用存储库接口。类似的东西:
public interface IRepository
{
//Get individual TEntity item by id
TEntity GetItem<TIdentifier, TEntity>(TIdentifier id);
//Get individual TEntity item by the expression
TEntity GetItem<TIdentifier, TEntity, TArg>(Expression<Func<TArg, TEntity>> expression);
//Get individual TEntity item by the expression
TEntity GetItem<TIdentifier, TEntity, TArg1, TArg2>(Expression<Func<TArg1, TArg2, TEntity>> expression);
//Get all TEntity items
IList<TEntity> GetList<TEntity>();
//Get all TEntity items, filtered by the expression
IList<TEntity> GetList<TEntity, TArg>(Expression<Func<TArg, IList<TEntity>>> expression);
//Get all TEntity items, filtered by the expression
IList<TEntity> GetList<TEntity, TArg1, TArg2>(Expression<Func<TArg1, TArg2, IList<TEntity>>> expression);
TIdentifier CreateItem...
bool UpdateItem...
bool DeleteItem...
}
我特别感兴趣的是适用于
的东西...但该理论适用于任何数据存储库
有没有人遇到过现成的解决方案,或者我必须通过编写更多的数据访问层来解决问题,而不是我想要握手。
注意:我知道ORM,我想要的东西可以删除编写任何DAL或存储过程的要求。
答案 0 :(得分:3)
看看NHibernate,Castle ActiveRecord,SubSonic,LinqToSql,......
你说你知道ORM,但它们几乎完全符合你的问题所要求的,至少在可能的范围内。
答案 1 :(得分:2)
我知道你说你知道ORM并且不想要它们,但是你能处理你编写的数据访问方法是用LINQ
编写的吗?
我发现我喜欢在LINQ
语句上写SQL
个语句。如果您对此持开放态度,我会查看实体框架,LINQ to SQL,NHibernate等。
修改:如果您想使用Azure,请查看以下链接:http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/74a0a57e-d979-48ed-b534-f449bac0f90d
答案 2 :(得分:2)
这是Salamanca的目标之一。它仍处于早期阶段,但我们可以使用一两个编码手......
如果您需要现有解决方案,我建议您深入研究可能与代码生成工具相关的ORM(如其他建议):
查看完整的ORMs list。
答案 3 :(得分:1)
.Net的LINQ to Entities和Entities框架是两个最好的跨服务器解决方案。
此处提供更多信息:http://msdn.microsoft.com/en-us/library/bb386964.aspx
答案 4 :(得分:0)
使用LINQ,这实际上可以为您完成所有数据访问任务...