我已经开始了一个新项目,并决定将 SharpArchitecture 与 Fluent nHibernate 一起用于我的 ORM。(我以前从未使用过 nHibernate 或 SharpArchitecture,所以如果我遗漏了什么,请保持温和)
我正在尝试做的事情,我不确定这是否是正确的方法,或者是否可以使用 nHibernate 映射来获取一个域实体,比如说客户端并将其映射到一个更轻的 ClientModel 将用于我的观点。较轻模型的原因是我不想为该视图带回客户端实体中的额外信息。
所以我的想法是在我的客户端实体之外创建一个只有几个字段的 ClientModel 实体,并使用 nHibernate 将两者映射在一起。
我尝试了一些事情,但他们都惨遭失败。
我的问题 - 这是我应该使用 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;
}
}