Похоже, что теперь я решил все свои проблемы LINQ, я не работаю над созданием реальной модели. Дело в том, что я не хочу быть привязанным к одной технологии, я хочу иметь свободу для реализации различных технологий доступа к данным и работы с одним интерфейсом.
Теперь я никогда не делал этого раньше, но, основываясь на своих знаниях и опыте ООП, я придумал такую идею:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
namespace Intranet.Data.Accounts
{
interface IContractsControl
{
ContractsControlViewData GetContracts(System.Nullable<int> contractTypeID,
System.Nullable<int> responsibilityID,
string expenseType,
System.Nullable<int> supplierID,
string businessID);
ContractsControlViewData GetContract(int contractID);
}
}
У меня есть несколько вопросов о том, как это должно работать.
- Где должен жить интерфейс, учитывая, что я использую библиотеку областей, разработанную Филом Хааком. На данный момент я создал папку с именем «Данные» на корневом уровне (как вы можете видеть из пространства имен).
- Наши хранимые процедуры имеют ложные имена, потому что они объединяются в базу данных, если я использую объекты, я вместо этого могу работать над объектно-ориентированным решением для доступа к sprocs. Должны ли имена в моей библиотеке доступа к данным отражать имена хранимых процедур в этом случае?
- Использование такой библиотеки позволило бы мне сделать
Accounts.GetContracts()
в моем контроллере. Это мудро?
- Есть ли какие-либо рекомендации по проектированию для этого подхода? схемы именования.
- Где должна существовать фактическая реализация? В той же папке, что и интерфейс?
Идея состоит в том, что если мы когда-нибудь откажемся от LINQ, то вместо этого мы можем использовать другую технологию доступа к данным (инфраструктура сущностей, обычный SQL и т. Д.). Я хотел бы услышать комментарии / критические замечания / оценки от более опытных.