我的应用程序定义了以下类型
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 实现,但我有几个限制:
- 新字段必须添加到与用户表相同的表中
- 扩展类型的代码存在于单独的项目中
例如,这是我的新课程:
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 事件中添加一些代码来克服这个问题,以便仅在不存在 CustomUserMap 类的情况下添加 UserMap 类。
但是我很快遇到了下一个问题,如果我在另一种类型中添加对 IUser 接口的引用,则会引发错误:
来自表 Blogs 的关联引用了一个未映射的类:IUser
我可能会做完全错误的事情,如果有人能告诉我我做错了什么,我将不胜感激。谢谢