データの取得元となるデータベースが複数あるサービス データ アクセス レイヤーを作成しました。
memberRepository
メンバーの詳細を含むを定義した 1 つのデータベースで問題なく動作していました。ただし、別のデータベースに保存されているセッション関連の詳細を取得する必要があります。
運用契約:
IMemberServices
含むGetLoggedInBuddies(int profileID);
ISessionServices
含むGetProfileIDFromSessionID(string sessionID);
私のサービスクラス:
public class MemberService : IMemberService, ISessionServices
{
#region Strategy pattern configuration
//
// Member repo
//
private MemberRepository memberRepository;
public MemberService()
: this(new MemberRepository())
{ }
public MemberService(MemberRepository memberRepository)
{
this.memberRepository = memberRepository;
}
//
// Session repo
//
private SessionRepository sessionRepository;
public MemberService() : this(new SessionRepository()){}
public MemberService(SessionRepository sessionRepository)
{
this.sessionRepository = sessionRepository;
}
#endregion
/// <summary>
/// Session-related details are maintained in the Secondary database
/// </summary>
/// <param name="sessionID"></param>
/// <returns></returns>
public int GetProfileIDFromSessionID(string sessionID)
{
int sessionProfileID = sessionRepository.GetProfileDetailsFromSessionID(sessionRepository);
return sessionProfileID;
}
/// <summary>
/// Try profileID = 1150526
/// </summary>
/// <param name="profileID"></param>
public void GetLoggedInBuddies(int profileID)
{
memberRepository.GetLoggedInBuddies(profileID);
//return memberRepository.GetLoggedInBuddies(profileID);
}
問題は、// Session Repo
すでにコンストラクターが定義されているため、セクションにあります。わかりました。
したがって、基本的に各メソッドで次のようなことをしたい
MemberService useSessionRepo = new MemberService(SessionRepository);
useSessionRepo.GetProfileDetailsFromSessionID(...);
MemberService useMemberRepo = new MemberService(MemberRepository);
useMemberRepo.GetLoggedInBuddies(...);
これをまとめる手が必要です。
ありがとう。