0
最近、実装をADO.NETからリポジトリパターンに変更し、Entity Frameworkを使用してエンティティを生成しました。リポジトリパターンは複数のテーブルにアクセスできますか?
今、2つのテーブル(アカウントとサブミット)にアクセスしようとしていますが、2番目のテーブルにアクセスするためのインクルードメソッドがありません。 シングルテーブルにアクセスするには、SelectAllメソッドが必要なすべてのデータを提供しています。私はここで間違って何をしているの?
あなたの回答を感謝します。ここで
は私のコードです:
public class GPController : ApiController
{
private readonly IRepository<Account> _acctRepository;
private readonly IRepository<Submission> _subRepository;
public GPController(IRepository<Account> acctRepository, IRepository<Submission> subRepository)
{
_acctRepository = acctRepository;
_subRepository = subRepository;
}
[HttpPost]
public IHttpActionResult CreateAccount(Account account)
{
try
{
_acctRepository.Insert(account);
_acctRepository.Save();
return Ok<bool>(true);
}
catch (Exception ex)
{
throw ex;
}
}
[HttpPost]
public IHttpActionResult CreateSubmission(Submission submission)
{
try
{
_subRepository.SelectAll().ToList();
_subRepository.Save();
return Ok<bool>(true);
}
catch (Exception ex)
{
throw ex;
}
}
[HttpGet]
public IHttpActionResult GetAccountTreeDetails()
{
try
{
var accounts = _acctRepository.SelectAll().ToList();
var submissions = _subRepository.SelectAll().ToList();
//if (submissions.Any())
//{
// var data = from a in accounts
// left join s in submissions on a.AccountId equals s.AccountId
// select a;
//}
//var data = from acct in _acctRepository
// join sub in _subRepository on acct.AccountId equals sub.AccountId
// select acct;
return Ok<List<Account>>(result);
}
catch (Exception ex)
{
throw ex;
}
}
}
ここAccountTableは、アカウントIDを持っているプライマリテーブルです。 ここで、サブミッションテーブルには、アカウントテーブルから外部キーであるAccountIDがあります。ここで
から –
アカウントのテーブルには、アカウントIDを持っているプライマリテーブルです... 1-nは、1-1。 SubmissionsテーブルのAccountIDは、Accountsテーブルから参照されるForiegnキーです。 – Ritha
私はあなたがGetAccountTreeDetails()を修正しようとしていると仮定しています。あなたが取り出そうとしていることは何ですか?アカウントに関連するすべての提出物、またはすべてのアカウントと関連する提出物? BTW CreateSubmission()メソッドは何もしていないようです - 私はあなたがここで何を達成しようとしているのかよく分かりません。 –