1

私は一般的にasp.net mvc3とmvcから始めており、同時にエンティティフレームワークも学んでいます。

私が構築しているアプリでは、ユーザーは他のユーザーの請求書や支払いを作成できますが、クエリを作成するときに請求書とアカウント クラスの関係を作成する方法がわかりません。私が抱えている問題は、accountId をデータベースに保存していることですが、toAccountId と fromAccountId からユーザーの姓名を表示したいと考えています。

クラス

public class Bill
{
    public int BillId { get; set; }
    public string BillName { get; set; }
    public string BillDescription { get; set; }
    public decimal Price { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime? DateDue { get; set; }
    public int FromAccountId { get; set; }
    public int ToAccountId { get; set; }
}

public class Account
{
    public int AccountId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string MobilePhone { get; set; }
    public string BankAccountNumber { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public DateTime LastLogin { get; set; }
}

public class HomeViewModel
{
    public IEnumerable<Bill> Bills { get; set; } 
}

コントローラーで

private IBillRepository repository;
public ViewResult Home()
{
    int userID = 1;
    HomeViewModel viewModel = new HomeViewModel
    {
        Bills = repository.Bills
            .OrderByDescending(b => b.DateCreated)
            .Where(b => b.FromAccountId.Equals(userID))
            .Take(amountOfBillsOnPageOnLoad)
    };
    return View(viewModel);
}
4

3 に答える 3

1

これは // ナビゲーション プロパティを使用するのに役立つかもしれません

public class Bill
{
    public int BillId { get; set; }
    public string BillName { get; set; }
    public string BillDescription { get; set; }
    public decimal Price { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime? DateDue { get; set; }
    public int FromAccountId { get; set; }
    public int ToAccountId { get; set; }

    public Account Accounts { get; set; }  // Navigation Property to the Account
}

ビューでは、次のように Account オブジェクトのプロパティにアクセスできます。

@model.Accounts.FirstName
于 2012-07-09T10:44:18.300 に答える
0

このようにできます。

  public class Bill
    {
        public int BillId { get; set; }
       //...........
        public Account FromAccount { get; set; }
        public Account ToAccount { get; set; }
        public int FromAccountId { get; set; }
        public int ToAccountId { get; set; }
    }


    public class Account
    {
        public int AccountId { get; set; }
     //..............
    }
于 2012-07-09T11:04:43.427 に答える
0

何かのようなもの...

 Bills = repository.Bills.Include("Account")
            .OrderByDescending(b => b.DateCreated)
            .Where(b => b.FromAccountId.Equals(userID))
            .Take(amountOfBillsOnPageOnLoad)

...あなたが行く必要があります。'Include' を使用して、関連するテーブルからクエリにデータをプルすることに注意してください。この構文を使用することもできます (おそらく実際には好まれます) .Include(b => b.Account)

于 2012-07-09T10:29:24.407 に答える