我在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 Answer
{
int _id {get;set;}
string AnswerText {get;set;}
boolean IsRight{ get;set;}
}
现在,由于一组学生拥有相同的QuestionAnswers,所以通过我的数据访问层,我将首次选择QA集,然后我希望将这些现有QA呈现给所有其他后续请求。
要实现这一点,我必须创建静态列表 QAList 。那么如何管理这个 QAList 对象,因为我想从Web服务项目和Web窗体项目访问这个对象,因为我使用的是常见的模型和常见的BusinessLogic类库项目。
我只想知道如何管理此对象,以便可以从同一解决方案中的多个项目访问它以及如何管理此对象,以便所有登录我的Web应用程序的用户都可以访问它(可以通过使类静态)。
答案 0 :(得分:3)
可从同一解决方案中的多个项目访问
转到要使用这些类的项目,并将项目引用添加到包含这些类的项目中。
所有登录我的网络应用的用户都可以访问
不,我拒绝。您还没准备好处理该共享列表实例的多线程问题。我的建议是避免使用static关键字。
简要说明。这是一个静态属性。
public static List<Animal> Zoo {get;set;}
ThreadA正在使用此声明查看列表
List<Bear> funnyBears = StaticClassName.Zoo.OfType<Bear>().Where(bear => bear.IsFunny).ToList();
与此同时,ThreadB做到了这一点:
StaticClassName.Zoo.Add(new Zebra());
ThreadA现在获得了关于如何在修改列表时无法枚举列表的例外。
此外,了解RaceConditions(特别是计算方法)和Deadlocks(当你第二次尝试解决竞争条件时会发生什么)。
答案 1 :(得分:0)
我想我应该使用这个链接http://geekswithblogs.net/Rhames/archive/2011/01/10/using-the-asp.net-cache-to-cache-data-in-a-model.aspx,因为他们已经实现了缓存,他们正在管理一个静态的对象列表。