C# ASP.NET MVC静态存储库?

C# ASP.NET MVC静态存储库?,c#,asp.net,asp.net-mvc,entity-framework,C#,Asp.net,Asp.net Mvc,Entity Framework,我有几个几乎永远不会改变的实体(如国家、地区等的列表),这让我想到。。。除了正常的存储库之外,静态存储库对这些实体有意义吗?我还说,因为这些实体仍将与其他实体交互,我仍然希望它们在单个工作单元下,因此它们共享相同的上下文 然而,我相信有更好的方法去做。我不熟悉ASP.NET和.NET Framework,但是有没有一种方法可以定义整个程序生命周期中使用的应用程序范围的数据?这是最好的办法吗 还是只定义一个包含这些实体集合的静态类更好,我可以在需要时从那里获取这些实体?为什么不使用缓存机制呢?在这

我有几个几乎永远不会改变的实体(如国家、地区等的列表),这让我想到。。。除了正常的存储库之外,静态存储库对这些实体有意义吗?我还说,因为这些实体仍将与其他实体交互,我仍然希望它们在单个工作单元下,因此它们共享相同的上下文

然而,我相信有更好的方法去做。我不熟悉ASP.NET和.NET Framework,但是有没有一种方法可以定义整个程序生命周期中使用的应用程序范围的数据?这是最好的办法吗


还是只定义一个包含这些实体集合的静态类更好,我可以在需要时从那里获取这些实体?

为什么不使用缓存机制呢?在这种情况下,我成功地使用了memchache。

您可以使用各种存储(状态管理)技术。有关更多信息,请遵循以下选项


听上去,您试图存储的两个实体不会占用大量内存,因此应用程序缓存将是最佳选择。

我认为Nexus23的答案涵盖了您的大部分选项。但我发现,对于像这样的一些数据(美国各州、城市),有时最好根本不保留一个列表,因为这只是你将来要处理的事情。就可用性而言,拥有190多个国家的列表(联合国和美国承认不同的列表)对于用户来说并不理想

应用程序的用户很可能比您更清楚什么是正确的,除非您计划随着世界地缘政治的变化进行更新


如果您在地址验证或地理定位等功能中需要此列表,最好使用专门用于此功能的服务,而不是尝试在内部重新滚动(谷歌地图API等)。

Hmmm,你愿意给我指一篇讨论这种机制的文章和/或博客吗?这家伙在设置和使用它方面有一篇很好的帖子。它实际上很容易使用。ASP.NET AppFabric缓存与memcached类似,但由Microsoft提供,可在Azure上使用,因此可能更好,具体取决于您的托管环境。谢谢!事实上,这些实体不会占用大量内存。将使用System.Web.HttpContext.Current.Cache存储字典。另一个问题:什么时候是储存的好时机?在Global.asax中启动应用程序期间?是的,这可以是存储数据或控制器代码的一个位置,因为应用程序缓存对象在整个应用程序中都是可用的。现在我想起来了,它在控制器中更有意义。。至少对我来说是这样。谢谢。“在可用性方面,拥有190多个国家的列表(联合国和美国承认不同的列表)对用户来说并不理想。”我不得不完全不同意这一点。GB是英国的国家代码,但如果你把它留给用户,他们会试图输入英国或其他许多不正确的数据,然后你甚至不能说他们是同一个国家的人。是的,我不会让它在未经验证的情况下以自由形式出现,但可用性的论点是,要进行验证,请使用谷歌地图API或其他也可以正常化的工具,然后您就不需要遵循联合国RSS订阅源,将国家/地区的更新输入到您的列表中。是否使用下拉列表或自动完成由您决定。但是在数据库中强制引用约束是保持数据正常的最后一步,而谷歌地图在那里是不可用的。也许我已经有一段时间没有处理地缘政治变化了。