新しいプロジェクトを開始し、ORM に Fluent nHibernate を使用して SharpArchitecture を使用することにしました。(nHibernate や SharpArchitecture を使用したことがないので、何か不足している場合は優しくしてください)
私がやろうとしていることは、これが正しい方法であるかどうか、またはnHibernateマップで可能であるかどうかはわかりません私の見解。軽量モデルの理由は、このビューのクライアント エンティティにある余分な情報を取り戻したくないからです。
したがって、クライアント エンティティに加えて、いくつかのフィールドのみを持つ ClientModel エンティティを作成し、nHibernate を使用して 2 つを一緒にマップすることを考えました。
私はいくつかのことを試みましたが、それらはすべて惨めに失敗しました。
私の質問 - これは nHibernate を使用する必要があるものですか、それとも automapper のようなものを使用する必要がありますか? nHibernate のマップという単語を、意味しないものを意味すると仮定して混乱させていますか?
ここで私を助けてくれるnHibernateの専門家を探しています。
また、小さなサンプルも大歓迎です。
ここにいくつかのコードがあります。
public class Client : EntityWithTypedId<Guid>
{
public virtual String Name { get; set; }
public virtual String Slug { get; set; }
public virtual IList<Address> Addresses { get; set; }
public virtual String ClientSize { get; set; }
public virtual String Industry { get; set; }
public virtual String Founded { get; set; }
public virtual String Type { get; set; }
public virtual String Specialty { get; set; }
public virtual Boolean ShowOnWebsite { get; set; }
public virtual Image Logo { get; set; }
public virtual Image LogoBlackAndWhite { get; set; }
public virtual Image LogoHighResolution { get; set; }
public virtual String FacebookUrl { get; set; }
public virtual String TwitterUrl { get; set; }
public virtual String LinkedInUrl { get; set; }
public virtual IList<Project> Projects { get; set; }
public virtual IList<Tag> Tags { get; set; }
public override Guid Id { get; protected set; }
public virtual DateTime CreatedDate { get; set; }
public virtual String CreatedBy { get; set; }
public virtual DateTime ModifiedDate { get; set; }
public virtual String ModifiedBy { get; set; }
public virtual DateTime? DeletedDate { get; set; }
public virtual String DeletedBy { get; set; }
}
public class ClientViewModel
{
public virtual String Name { get; set; }
public virtual String Slug { get; set; }
}
public class ClientTasks : IClientTasks
{
private readonly IRepositoryWithTypedId<Client, Guid> _clientRepository;
private readonly IRepositoryWithTypedId<Image, Guid> _imageRepository;
public ClientTasks(IRepositoryWithTypedId<Client, Guid> clientRepository, IRepositoryWithTypedId<Image, Guid> imageRepository)
{
_clientRepository = clientRepository;
_imageRepository = imageRepository;
}
public List<Client> GetAll()
{
var allClients = _clientRepository.GetAll().ToList();
return allClients;
}
}