盖特,塞特c#

盖特,塞特c#,c#,getter,C#,Getter,我的web应用程序中有各种自定义数据类型,用于映射数据库中的一些数据 比如: Person Id Name Surname 我需要在我的大部分申请页面中列出一份人员名单 我想创建一个getter属性,从数据库中获取人员列表并将其存储到缓存中,这样我就不必每次调用数据库 类似于(伪代码) 公开人员名单 { get{return if cache!=从缓存返回的人员列表为空,否则从数据库获取;} } 我应该把这个吸气剂放在哪里?在我的Person类定义中或进入我的基页(所有其他页从中继承的页)

我的web应用程序中有各种自定义数据类型,用于映射数据库中的一些数据

比如:

Person
Id
Name
Surname
我需要在我的大部分申请页面中列出一份人员名单

我想创建一个getter属性,从数据库中获取人员列表并将其存储到缓存中,这样我就不必每次调用数据库

类似于(伪代码)

公开人员名单
{
get{return if cache!=从缓存返回的人员列表为空,否则从数据库获取;}
}
我应该把这个吸气剂放在哪里?在我的Person类定义中或进入我的基页(所有其他页从中继承的页)


谢谢

我认为你不应该把它放在你的
Person
类中,因为它访问数据库
HttpContext.Current.Cache
。此外,我认为您应该将其作为一种方法而不是属性,以暗示这可能是一个“冗长”的操作。因此,在这两个选项中,我将把它放在基本
页面
类上

我认为把它放在你的主页上会是更好的选择

根据您的应用程序体系结构,在域类中放置与流程相关的代码可能是一个问题。不过,有些人在DDD(域驱动设计)类型的应用程序中使用它

甚至更好的是,我通常尝试在服务类中隐藏这些实现细节。您可以拥有一个
PersonService
类,该类将包含上述方法和所有与人员相关的操作。这样,任何需要个人信息的页面都只需调用
PersonService
;您可以将页面代码集中在与GUI相关的代码上

public List<Person> Persons 
{
   get { return if cache != null  return List of Persons from cache  else get from the database;}
}