C# 如何在.NET Web表单应用程序中管理应用程序范围的静态模型类
我在DB里有两张桌子 表名问题 栏目: _id,QuizId,QuestionText 和第二个表的答案 栏目: _id、QuesId、QuizId、AnswerText、IsRight 现在我已经通过数据访问层填充了这样的模型C# 如何在.NET Web表单应用程序中管理应用程序范围的静态模型类,c#,.net,sql,web-services,webforms,C#,.net,Sql,Web Services,Webforms,我在DB里有两张桌子 表名问题 栏目: _id,QuizId,QuestionText 和第二个表的答案 栏目: _id、QuesId、QuizId、AnswerText、IsRight 现在我已经通过数据访问层填充了这样的模型 Class QuestionAnswers { int _id {get;set;} string QuestionText {get;set;} List<Answer> AnswerList { get; set;} } 现在,由于
Class QuestionAnswers
{
int _id {get;set;}
string QuestionText {get;set;}
List<Answer> AnswerList { get; set;}
}
现在,由于一组的学生有相同的问题答案集,因此通过我的数据访问层,我将仅在第一次选择QA集,然后我希望将这些现有QA呈现给所有其他后续请求
要实现这一点,我必须创建静态列表QAList。所以如何管理这个QAList对象,因为我想从Web服务项目以及Web表单项目访问这个对象,因为我正在设计一个通用模型和通用BusinessLogic类库项目
我只想知道如何管理此对象,以便可以从同一解决方案中的多个项目访问它,以及如何管理此对象,以便登录我的web应用程序的所有用户都可以访问它(可以通过使类为静态来实现)
可从同一解决方案中的多个项目访问
转到要使用这些类的项目,并向包含这些类的项目添加项目引用
- 右键单击引用
- 单击添加引用
- 更改为“项目”选项卡
- 选择您的模型项目
所有登录我的web应用程序的用户都可以访问 不,我拒绝。您还没有准备好处理该共享列表实例的多线程问题。我的建议是避免使用static关键字
简要说明。这是一个静态属性
public static List<Animal> Zoo {get;set;}
ThreadA现在得到一个异常,即在修改列表时如何不能枚举列表
此外,了解(尤其是计算)和(当您第二次尝试解决竞争条件时会发生什么)
可从同一解决方案中的多个项目访问
转到要使用这些类的项目,并向包含这些类的项目添加项目引用
- 右键单击引用
- 单击添加引用
- 更改为“项目”选项卡
- 选择您的模型项目
所有登录我的web应用程序的用户都可以访问 不,我拒绝。您还没有准备好处理该共享列表实例的多线程问题。我的建议是避免使用static关键字
简要说明。这是一个静态属性
public static List<Animal> Zoo {get;set;}
ThreadA现在得到一个异常,即在修改列表时如何不能枚举列表
此外,了解(尤其是计算)和(当您第二次尝试解决竞赛条件时会发生什么情况).这难道不是数据库的用途吗?我不想重复连接数据库来访问同一组数据。这就是为什么我希望获取数据并将其存储在某个共享模型中,然后我可以从该模型中向每个用户呈现数据。享受重新发明轮子的乐趣。因此,我想说,对于每个请求,我都会创建连接,打开连接,执行存储过程,然后填充模型,然后我的ASP.net工作进程将呈现html。为什么我要在没有必要的情况下重复这些步骤呢?欢迎来到世界上每一个数据驱动的网站是如何工作的。缓存很重要,但您似乎在谈论如何在单个实例中保持虚拟数据库可供多个用户/应用程序访问。这正是网络感知数据库为您设计的功能。这难道不是数据库的用途吗?我不想重复连接数据库来访问同一组数据。这就是为什么我希望获取数据并将其存储在某个共享模型中,然后我可以从那里向每个用户呈现数据。祝您有重新发明轮子的乐趣。所以您想说的是,对于每个请求,我将创建连接,打开连接,执行存储过程,然后填充模型,然后我的ASP.net工作进程将呈现html。为什么我要在没有必要的情况下重复这些步骤呢?欢迎来到世界上每一个数据驱动的网站是如何工作的。缓存很重要,但您似乎在谈论如何在单个实例中保持虚拟数据库可供多个用户/应用程序访问。这正是网络感知数据库为您设计的功能。您能否简单解释一下,如果尝试实现这一功能,我会面临什么类型的多线程问题。我怎样才能使它线程安全。因为我有足够的时间,所以我想这样做。谢谢david告诉我添加参考资料的过程。我知道,甚至任何5天的.NET开发人员都知道。基本上我想知道,一旦我添加了引用,BLL和模型的.dll文件将被复制到wen forms项目和WCf项目,我必须在不同的物理服务器上部署服务项目和web表单项目。那么,一个BLL创建的静态(共享)对象如何可以通过另一个BLL访问呢?这就是我想在您的第一个响应中了解的。“该对象如何位于两个AppDomain中?”您在服务中拥有该对象,并且该服务向客户端提供对该对象的访问。“任何5天的.NET开发人员都知道这一点”,我记得有一次我不知道。它确实准确地回答了您的问题。您能否简单地解释一下,如果尝试实现这一点,我会面临什么类型的多线程问题。我怎样才能使它线程安全。因为我有足够的时间,所以我想这样做。谢谢david告诉我添加参考资料的过程。我知道,甚至任何5天的.NET开发人员都知道。基本上我想知道,一旦我添加了引用,BLL和模型的.dll文件将被复制到wen forms项目和WCf项目,我必须在不同的物理服务器上部署服务项目和web表单项目。那么,这个静态(共享)对象如何实现呢
List<Bear> funnyBears = StaticClassName.Zoo.OfType<Bear>().Where(bear => bear.IsFunny).ToList();
StaticClassName.Zoo.Add(new Zebra());