リポジトリとエンティティ フレームワークを使用してデータ アクセス レイヤー (DAL) をセットアップするのに時間がかかりました。DAL は、ASP.Net MVC 4 アプリケーションと同じソリューション内の別のプロジェクト (クラス ライブラリ プロジェクト) です。ただし、ASP.Net MVC 4 アプリケーションから作成されたデータベースにアクセスできません。
次のエラーが表示されます
ファイル 'H:\Dropbox\TechCenter\Visual Studio 2012\Projects\TxValueCardProject\TxValueCardProject.Presentation\App_Data\TxValueCardProject.DataAccessLayer.TxDBContext.mdf' をデータベース 'TxValueCardProject.DataAccessLayer.TxDBContext' として添付できません。
私のDALにはPOCOクラスがあります:
public class Customer
{
public int CustomerId { get; set; }
public int RetailerId { get; set; }
public string CustomerName { get; set; }
public string CustomerEmail { get; set; }
public int PointsBalance { get; set; }
public decimal CashBalance { get; set; }
public ICollection<LoyaltyCard> LoyaltyCards { get; set; }
public virtual Retailer Retailer { get; set; }
}
そして DBContext クラス
public class TxDBContext:DbContext
{
public DbSet<Customer> Customer { get; set; }
}
そして、このリポジトリ
public class CustomerRepository : IRepository<Customer>
{
TxDBContext context = new TxDBContext();
public IQueryable<Customer> All
{
get { return context.Customers; }
}
}
このセットアップでは、すべてが DAL で正常に動作し、すべてのユニット テスト パスが実行され、SQL MS から DB を確認できます。ASP.Net MVC 4 プロジェクトに切り替えて、適切な参照と Usings とすべてが正常にビルドされた場合を除いて、そのような単純な DB アクセスを試みますが、失敗します
namespace TxValueCardProject.Presentation.Controllers
{
public class CustomerController : Controller
{
public ViewResult Index()
{
var custRepo = new CustomerRepository();
var customersInDb = custRepo.All;
return View(customersInDb);
}
ビューは単純なループ文です@foreach (var item in Model)
助けてください、何が欠けているか、間違っていますか?