我正在使用基于linq to sql的仓储模式,每个表格都有一个对应的仓储类。我想知道,我这样做是否符合良好/标准的方式。
联系人仓储类
当我需要联系人时,我调用ContactRepository中的方法,标签也是同样的道理。但是当我需要联系人和标签一起时,我调用ContactTag存储库中的GetDetails()方法,它不会返回ORM生成的ContactTag实体,而是返回包含ORM生成的Contact和ContactTag的ContactTagDetail实体。我知道我可以简单地在ContactTag存储库中调用GetAll并访问Contact.ContactTag,但由于它是Linq to SQL,没有在查询级别上进行延迟加载的选项,因此每当我需要一个带有相关实体的实体时,我就创建一个投影类。
另一个疑问是我真正需要编写方法的地方,我可以在ContactRepository中编写GetAllWithTags()或类似的方法,但我选择在ContactTag存储库中编写。
你有什么建议?
联系人仓储类
Contact GetByID()
Contact GetAll()
COntactTagRepository
List<ContactTag> Get(long contactID)
List<ContactTag> GetAll()
List<ContactTagDetail> GetAllDetails()
class ContactTagDetail
{
public Contact Contact {get;set;}
public ContactTag COntactTag {get;set;}
}
当我需要联系人时,我调用ContactRepository中的方法,标签也是同样的道理。但是当我需要联系人和标签一起时,我调用ContactTag存储库中的GetDetails()方法,它不会返回ORM生成的ContactTag实体,而是返回包含ORM生成的Contact和ContactTag的ContactTagDetail实体。我知道我可以简单地在ContactTag存储库中调用GetAll并访问Contact.ContactTag,但由于它是Linq to SQL,没有在查询级别上进行延迟加载的选项,因此每当我需要一个带有相关实体的实体时,我就创建一个投影类。
另一个疑问是我真正需要编写方法的地方,我可以在ContactRepository中编写GetAllWithTags()或类似的方法,但我选择在ContactTag存储库中编写。
你有什么建议?