Интерфейсы SubSonic, SimpleRepository и entity
-
20-09-2019 - |
Вопрос
Во-первых, я хочу извиниться за свой английский, а не за мою сильную сторону.
К вопросу.В моем текущем проекте у меня есть интерфейсы к моим сущностям, поэтому я могу использовать атрибуты Subsonic в своих головных объектах, и я хочу иметь возможность плавно переключать O / R mapper в будущем.В любом случае, я получаю сообщение об ошибке, когда пытаюсь использовать свои интерфейсы и классы SimpleRepositorys, такие как Single<>, Все<> и так далее.Я знаю, почему я получаю сообщение об ошибке, но мне нужна помощь, чтобы найти способ обойти это.Сообщение об ошибке:
Система.Исключение InvalidCastException:Невозможно преобразовать объект типа 'SubSonic.DomainObjects.User' в тип 'Core.DomainObjects.IUser'.
Код:
public IUser FindById(int id) {
var user = _repository.Single<User>(x => x.Id == id);
return (IUser)user;
}
Как вы можете видеть, я попытался сделать так, чтобы порядок User to IUser работал, когда я хочу добавить данные, но безуспешно.Что я могу сделать, чтобы это сработало?
Спасибо,
Тимми
Решение
Я не думаю, что в данной ситуации проблема в дозвуке.Этот код будет работать:
namespace Core.Objects
{
public interface ICustomer
{
int CustomerID { get; set; }
string Name { get; set; }
}
}
Код для фактического класса:
namespace Business.Entities
{
public class Customer: Core.Objects.ICustomer
{
public int CustomerID { get; set; }
[SubSonicStringLength(50)]
public string Name { get; set; }
}
}
И, наконец, функция получения клиента:
private static ICustomer CustomerByID(int id)
{
var repos = new SimpleRepository("Test", SimpleRepositoryOptions.None);
var customer = repos.Single<Customer>(c => c.CustomerID == id);
return (ICustomer) customer;
}