私のアプリケーションには次のタイプが定義されています
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);
}
}
これに関して私が最初に抱えた問題は、同じインターフェースが 2 回マップされるのを好まないということでした。Application_Start イベントにコードを追加して、CustomUserMap クラスが存在しない場合にのみ UserMap クラスを追加することで、これを克服しました。
ただし、すぐに次の問題に遭遇しました。別のタイプの IUser インターフェイスへの参照を追加すると、エラーがスローされます。
テーブル Blogs からの関連付けは、マップされていないクラス IUser を参照します。
私はおそらく完全に間違っていると思います。誰かが私が間違っていることを教えてくれれば幸いです。ありがとう