【发布时间】:2010-04-09 19:37:56
【问题描述】:
我正在使用带有 linq to sql 的存储库模式,我正在为每个表使用一个存储库类。 我想知道,我做得很好/标准吗,
联系存储库
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也是如此
但是当我需要联系人和标签时,我在 ContactTag 存储库中调用 GetDetais(),它不返回由 orm 生成的 COntactTag 实体,而是返回包含由 orm 生成的 COntact 和 COntactTag 的 ContactTagDetail 实体,我知道我可以简单地调用GetAll 在 COntactTag 存储库中并且可以访问 Contact.ContactTag 但作为它的 linq to sql 它将在查询级别没有延迟加载的选项,所以每当我需要一个具有相关实体的实体时,我都会创建一个投影类
另一个疑问是我真的需要纠正我可以在联系人和 ContactTag 存储库中执行的方法,例如在联系人存储库 GetALlWithTags() 或其他东西中,但我在 COntactTag 存储库中执行此操作
你有什么建议?
【问题讨论】:
标签: c# linq-to-sql design-patterns