自动数据访问层

3

我厌倦了编写数据访问层。我认为这是一项无聊且毫无意义的工作。我期望有一个开发环境,我可以在其中创建我的实体/模型并开始构建应用程序。编写数据访问层、存储过程等所需的时间只会消耗我的项目热情。

我想要的是一个通用的数据仓库接口。类似于:

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 Server
  • sqLite

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

是否有人遇到过现成的解决方案,或者我必须编写更多的数据访问层来解决问题。

注意:我知道ORM,但我想要一些不需要编写任何DAL或存储过程的解决方案。

5个回答

3

请看NHibernate、Castle ActiveRecord、SubSonic、LinqToSql等框架。

你说你了解ORM,但它们基本上正是你问题所要求的,至少在可能的范围内。


我使用这些,难道还需要为所有实体编写过程吗? - grenade
不,你不必编写存储过程,你可以编写LINQ语句。这样,你的所有代码都是用C#编写的。 - mkchandler
2
如果你的编程信条是编写存储过程,那么是的,你必须编写它们。我成功地使用LinqToSql作为我的ORM实现了Web表单模型,并且没有编写任何存储过程。 - JustLoren

2

是的,Linq to SQL适用于SQL Server。是否有适用于Azure的Linq To Azure? - grenade
2
您可以使用ADO.NET数据服务连接到Azure,并编写针对其的LINQ查询。 - mkchandler

2
这是萨拉曼卡的其中一个目标。虽然还处于早期阶段,但我们可以使用一两个编码帮手……

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

查看这个非常完整的ORM列表


1

0

使用LINQ,它几乎可以为您完成所有的数据访问任务...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接