Webサービスを介してビジネスレイヤークラス(C#クラス)を呼び出すWindowsphoneクライアントがあります。
私のビジネスレイヤークラスでは、私が持っているsilverlightclassではなくC#クラスです。List<int> numbers = new List<int>()
そして、ビジネスレイヤークラスのメソッドから、リストは数字で埋められます。このメソッドがリストに番号を入力した後、クライアントレイヤーが再度呼び出され、クライアントの新しいメソッドが呼び出され、ビジネスレイヤーに戻ります。List<int> numbers
ここに問題があります。クライアント層からビジネス層への呼び出しの間にデータを入力したままにしておきたいのです。これで、ビジネスレイヤーが呼び出されるたびに、List<int> numbers
が空になります。
Silverlightクラスでは、分離されたストレージを使用して、アプリケーションレベルでデータを存続させることができます。asp.netでは、アプリケーションの状態やセッションなどを使用できます。
このリストをC#クラスに保存して、呼び出しの合間にリストにデータを保存するにはどうすればよいですか?
1回目の呼び出し
Client->webservice->businesslayer =List<int> numbers
値を取得します
2回目の呼び出し(問題)
Client-> webservice-> businesslayer = List<int> numbers
リストに最初の呼び出しからの値を保持させたいのですが、リストをApplicationStateやIsolatedStorageのようなもの。
これがこの問題に関する私のコードです
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();
}