我有一个 Windowsphone 客户端,它通过 Web 服务调用业务层类(C# 类)。
在我的业务层类中,它是一个 C# 类,而不是我拥有的 silverlightclassList<int> numbers = new List<int>()
并且从业务层类中的一个方法中,列表中充满了数字。在此方法用数字填充列表后,再次调用客户端层并调用我的客户端中的一个新方法,我们再次回到业务层。这是问题所在,我想List<int> numbers
在从客户端层到业务层的调用之间保持填充。现在每次调用业务层时List<int> numbers
都会变空。
在 silverlight 类中,我可以使用隔离存储在应用程序级别保持数据活动。在 asp.net 中,我可以使用应用程序状态、会话或其他任何内容。
如何将此列表存储在 C# 类中以在调用之间将数据保存在列表中?
第一次调用
Client -> webservice -> businesslayer =List<int> numbers
获取值
第二次调用(问题)
Client -> webservice -> businesslayer = List<int> numbers
我希望列表保留第一次调用的值,但它是空的,因为我无法将列表保存到ApplicationState 或独立存储之类的东西。
这是我关于这个问题的代码
public class TimereportDataAccess
{
TimereportDBEntities1 context = new TimereportDBEntities1();
List<int> dayId = new List<int>(); // Used in sendDays() and sendWeeks()
bool submitStatus = true; // Used in sendDays() and sendWeeks()
public List<int> sendDays(List<Common.Day> days, bool status)
{
TimereportMappers mapper = new TimereportMappers();
foreach(var item in mapper.dayMap(days))
{
context.Days.AddObject(item);
context.SaveChanges();
dayId.Add(item.Id);
}
if (status == true)
{
submitStatus = true;
}
else
{
submitStatus = false;
}
return dayId;
}
public void sendWeeks(List<Common.Week> weeks)
{
TimereportMappers mapper = new TimereportMappers();
foreach (var item in mapper.weekMap(weeks))
{
context.Weeks.AddObject(item);
}
context.SaveChanges();
int firstday;
firstday = dayId.FirstOrDefault();
if (submitStatus == true )
{
int reportId = (from u in context.Users
join r in context.Reports on u.Id equals r.UserId
join w in context.Weeks on r.Id equals w.ReportId
join d in context.Days on w.DayId equals d.Id
where d.Id.Equals(firstday)
select r.Id).SingleOrDefault();
Reports report = context.Reports.SingleOrDefault(i => i.Id == reportId);
report.Status = "submitted";
context.SaveChanges();
}
dayId.Clear();
}