2009-08-13 115 views
3

我基本上生病写数据访问层。我认为这是一个无聊而毫无意义的努力。我设想一个开发环境,我可以创建我的实体/模型并开始构建应用程序。编写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... 
} 

我的东西特别感兴趣的是将工作

  • Azure的数据服务
  • SQL服务器
  • SQLite的

...但理论适用于任何数据存储库

有没有人遇到过现成的解决方案,还是我必须通过编写更多的数据访问层来解决这个问题,这比我曾经想过的要坚持一些。

注:我知道ORM的,我想要的东西,删除要求编写的任何DAL或存储特效。

回答

3

看看NHibernate的,城堡的ActiveRecord,亚音速,LinqToSql,...

你说你知道的ORM,但他们做你的问题问究竟几乎什么,至少在可能的范围内。

+0

难道我仍然不得不为我所有的实体编写特效吗? – grenade 2009-08-13 13:50:09

+0

不,你不必写存储过程,你可以编写LINQ语句。那么你的所有代码都在C#中。 – mkchandler 2009-08-13 13:51:26

+2

如果你的编程教条是编写存储过程,那么是的,你将不得不编写它们。我成功实现了使用LinqToSql作为没有存储过程的ORM的Web窗体模型。 – JustLoren 2009-08-13 13:53:07

2

我知道你说你知道ORM的并不想要它们,但是你能处理一些你写的数据访问方法写在LINQ的东西吗?

我发现我喜欢用SQL声明来写LINQ声明。如果你打开这个,我想看看实体框架,LINQ到SQL,等

编辑:如果你想使用Azure的,看看这个链接:http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/74a0a57e-d979-48ed-b534-f449bac0f90d

+0

是的,Linq to SQL符合法案,但只适用于SQL Server。 Linq To Azure有没有? – grenade 2009-08-13 13:52:04

+2

您可以使用ADO.NET数据服务连接到Azure并针对该问题编写LINQ查询。 – mkchandler 2009-08-13 13:55:32

+0

@ mc2thaH谢谢,我不知道。 – grenade 2009-08-13 14:01:41

0

使用LINQ ,这实际上将为您执行所有数据访问任务...

2

这是的Salamanca的目标之一。它仍然处于早期阶段,但我们可以使用一个编码手或两个...

如果您想要一个现有的解决方案,我建议您深入研究可能与代码生成工具相关的ORM(如其他建议):

看看这个非常完整的ORMs list