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 或存储过程的东西。

4

5 回答 5

3

看看 NHibernate、Castle ActiveRecord、SubSonic、LinqToSql、...

您说您了解 ORM,但它们几乎完全按照您的问题要求做,至少在可能的范围内。

于 2009-08-13T13:48:21.983 回答
2

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

我发现我喜欢写LINQ陈述而不是SQL陈述。如果您对此持开放态度,我会查看 Entity Framework、LINQ to SQL、NHibernate等。

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

于 2009-08-13T13:49:46.587 回答
2

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

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

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

于 2009-08-13T14:07:18.553 回答
1

LINQ to Entities 和 .Net 的 Entities 框架是两个最好的跨服务器解决方案。

更多信息在这里:http: //msdn.microsoft.com/en-us/library/bb386964.aspx

于 2009-08-13T14:01:50.037 回答
0

使用 LINQ,它实际上会为您完成所有数据访问任务......

于 2009-08-13T13:51:40.537 回答