Для моего приложения определены следующие типы
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
Я, вероятно, поступаю совершенно неправильно, и я был бы признателен, если бы кто-то показал мне, что я делаю неправильно. Спасибо