POCOとFluentNHibernateを使用して、Userのようなオブジェクトを取得し、それにさまざまなプロパティを与えることができるようにしたいと思います。これらのオブジェクトが、一般的なプロパティではなく、それらのプロパティに焦点を合わせられるようにしたいと思います。現在、CreatedDateTimeやModifiedDateTimeなどの監査済みプロパティを持つ機能をエンティティに与えるために派生できるAuditableEntityがありますが、すべてのオブジェクトにIDを実装する必要性を排除する機能も必要です。他のベースオブジェクトの一部になることができるので、このオブジェクトにはGUID IDがあり、これにはint IDがあり、このオブジェクトにはIDがないと言えます。現在、私のUserオブジェクトは次のようになっています。
User.cs
namespace ZeroBase.Domain.Entities
{
public class User : AuditableEntity<User>
{
public virtual Guid Id { get; set; }
public virtual string Username { get; set; }
public virtual string Password { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string EmailAddress { get; set; }
public virtual IEnumerable<Comment> Comments { get; set; }
}
}
私のUserMapは次のようになります。
UserMap.cs
namespace ZeroBase.Infrastructure.Data
{
public class UserMap : AuditMap<User>
{
public UserMap()
{
Id(x => x.Id)
.Column("Id")
.GeneratedBy.Guid();
Map(x => x.Username);
Map(x => x.Password);
Map(x => x.FirstName);
Map(x => x.LastName);
Map(x => x.EmailAddress);
HasMany(x => x.Comments);
Table("Users");
}
}
}
とにかく、ある種の汎用基本クラスでIdの作成を処理し、オブジェクトが監査可能になるために継承できる別のクラスを持っているのでしょうか。