SubSonic, SimpleRepository и интерфейсы сущностей

Во-первых, я хочу извиниться за свой английский, а не за мои сильные стороны.

К вопросу. В моем текущем проекте у меня есть интерфейсы для моих сущностей, поэтому я могу использовать атрибуты Subsonic в своих головных элементах, и я хочу иметь возможность беспрепятственно переключать отображение O / R в будущем. В любом случае, я получаю сообщение об ошибке, когда пытаюсь использовать свои интерфейсы и классы SimpleRepositorys, такие как Single ‹>, All‹> и так далее. Я знаю, почему получаю сообщение об ошибке, но мне нужна помощь, чтобы найти способ ее обойти. Сообщение об ошибке:

System.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, когда я хочу добавить данные, но безуспешно. Что я могу сделать, чтобы это работало?

Спасибо,
Тимми


person Timmie Sarjanen    schedule 12.02.2010    source источник


Ответы (1)


Я не думаю, что проблема в этой ситуации - дозвуковые. Этот код будет работать:

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;
}
person W van Noort    schedule 10.03.2010
comment
Раздражает, забыл включить интерфейс. - person Timmie Sarjanen; 19.03.2010