При выполнении методов портала данных в объекте CSLA содержимое этих методов портала данных должно вызывать службы данных для получения и обновления этих данных. Эти веб-сервисы должны быть просто интерфейсными, чтобы их можно было смоделировать.
Вот пример заполнения объекта сотрудника:
private void DataPortal_Fetch(SingleCriteria<Employee, int> criteria)
{
IEmployeeDTO data = DataServiceContext.Current.EmployeeDataService.GetEmployee(criteria.Value);
// Just do left to right copying here
LoadProperty<int>(IdProperty, data.Id);
}
Тогда EmployeeDataService - это просто интерфейс. Мы используем Ninject для создания конкретного класса для этого интерфейса, который будет указывать на другую сборку для технологии доступа к данным, которую вы хотите использовать. Затем вы можете указать другой конкретный класс для тестового класса.
Вот пример интерфейса службы данных:
public interface IEmployeeDataService
{
IEmployeeDTO GetEmployee(int id);
}
Вот пример конкретного класса службы данных для использования Linq 2 SQL:
namespace XXX.DataServices.Linq
{
public class EmployeeDataService : IEmployeeDataService
{
public IEmployeeDTO GetEmployee(int id)
{
// use Linq to SQL to get the data and transform that class into IEmployeeDTO
}
}
}
Вот пример службы данных для тестирования:
namespace XXX.DataServices.Testing
{
public class IEmployeeDTO GetEmployee(int id)
{
// mock up several IEmployeeDTO objects with known data
}
}
person
Jamie Wright
schedule
26.09.2010