2009-08-13 5 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 Services Data
  • SQL Server
  • SQLITE

... но теория применима к любому хранилищу данных

Может кто-нибудь встретить готовое решение или я должен решить проблему, написав больше слоев доступа к данным, чем когда-либо хотел встряхнуть палку.

Примечание: Я знаю о ORM-х, я хочу что-то, что снимает требование, чтобы написать какой-либо из DAL или сохраненных проки.

ответ

3

Взгляните на NHibernate, замок ActiveRecord, SubSonic, LinqToSql ...

Вы говорите, что вы знаете о ORMs, но они в значительной степени именно то, что просит ваш вопрос, по крайней мере, насколько это возможно.

+0

Не надо ли мне писать прозы для всех моих сущностей? – grenade

+0

Нет, вам не нужно писать хранимые procs, вы можете писать инструкции LINQ. Итак, весь ваш код находится на C#. – mkchandler

+2

Если ваша догма программирования заключается в написании хранимых процедур, то да, вам придется их написать. Я успешно реализую модели Web Forms с использованием LinqToSql в качестве своего ORM без хранимых процедур. – JustLoren

2

Я знаю, что вы сказали, что знаете об ORM и не хотите их, но могли ли вы иметь дело с чем-то, где методы доступа к данным, которые вы пишете, написаны в LINQ?

Я нашел, что мне нравится писать LINQ заявления за SQL заявления. Если вы открыты для этого, я хотел бы проверить Entity Framework, LINQ к SQL, и т.д.

Edit: Если вы хотите использовать 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

+2

Вы можете использовать службы данных ADO.NET для подключения к Azure и записи запросов LINQ к этому. – mkchandler

+0

@ mc2thaH Спасибо, я этого не знал. – grenade

0

Использование LINQ , что будет делать практически все задачи доступа к данным для вас ...

2

Это одна из целей Salamanca. Он все еще находится на ранних этапах, но мы могли бы использовать кодирующую руку или две ...

Если вы хотите использовать существующее решение, я предлагаю вам перейти на ORM (как и другие предлагаемые), возможно связанные с инструментами генерации кода:

Отъезд полностью ORMs list.