繁体   English   中英

自动数据访问层

[英]Automatic Data Access Layer

我从根本上讨厌写数据访问层。 我认为这是无聊而毫无意义的努力。 我设想一个开发环境,在这里我可以创建我的实体/模型并开始构建应用程序。 编写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或存储的proc的要求。

看看NHibernate,Castle ActiveRecord,SubSonic,LinqToSql等...

您说您了解ORM,但是它们至少在可能的范围内完全满足您的要求。

我知道您说过您了解ORM,但不希望使用它们,但是您可以处理使用LINQ编写的数据访问方法吗?

我发现我喜欢在SQL语句上编写LINQ语句。 如果您愿意这样做,我将签出Entity Framework,LINQ to SQL, NHibernate等。

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

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

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

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

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

此处的更多信息: http : //msdn.microsoft.com/zh-cn/library/bb386964.aspx

使用LINQ,实际上可以为您完成所有数据访问任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM