В моем приложении определены следующие типы
public interface IUser {
int Id { get; set; }
int UserName { get; set; }
}
public class User : IUser {
public virtual int Id { get; set; }
public virtual string UserName { get; set; }
}
Класс User свободно отображается следующим образом:
public class UserMap : ClassMap<User> {
public UserMap() {
Table("Users");
Id(x => x.Id);
Map(x => x.UserName);
}
}
Я хотел бы создать другую реализацию IUser, но у меня есть пара ограничений:
- Новые поля должны быть добавлены в ту же таблицу, что и таблица Users.
- Код для расширения типа существует в отдельном проекте.
Например, вот мой новый класс:
public class CustomUser : IUser {
public virtual int Id { get; set; }
public virtual string UserName { get; set; }
public virtual string Name { get; set; }
}
Который отображается как:
public class CustomUserMap : ClassMap<CustomUser> {
public CustomUserMap() {
Table("Users");
Id(x => x.Id);
Map(x => x.UserName);
Map(x => x.Name);
}
}
Первая проблема, с которой я столкнулся, заключалась в том, что он не хотел, чтобы один и тот же интерфейс отображался дважды. Я преодолел это, добавив некоторый код в событие Application_Start, чтобы добавить класс UserMap только в том случае, если класс CustomUserMap не существует.
Однако вскоре я столкнулся со следующей проблемой: если я добавлю ссылку на интерфейс IUser в другом типе, он выдает ошибку:
Ассоциация из таблицы Blogs относится к несопоставленному классу: IUser
Я, вероятно, делаю что-то совершенно неправильно, и я был бы признателен, если бы кто-нибудь мог показать мне, что я делаю неправильно. Спасибо