私は MVC の初心者で、オンライン バンキングの機能の一部をシミュレートする基本的な Web アプリケーションを構築しようとしています。これまでのところ、ユーザー アカウントをセットアップして SimpleMembership にリンクし、アカウント管理用の簡単な CRUD 機能を実装することができました。
編集:
以下のように送金を行い、ユーザーにビューのドロップダウン ボックスから account1 と account2 を選択させ、送金金額を入力させます。私の質問は、両方のアカウントの合計が同じクラスにある以下の特定のモデル設定で、このようなことを行うことはできますか? それとも、各生徒にアカウントの ICollection を与えるのが最善でしょうか?
また、転送のロジックとアクション結果をこのように処理するのは正しい方法ですか? それとも、モデルでそれを処理するのが最善ですか?
私がやろうとしていることの疑似コード
public ActionResult TransferFunds(int firstAccountId, Int SecondAccountID, decimal transferAmount)
{
var account1 = //find first account from context
var account2 = //find second account from context
if(account1 amount >= transferAmount)
{
account1 amount -= transferAmount;
account2 amount += transferAmount;
}
save changes
}
これをご覧いただき、ご協力いただきありがとうございます。
私が参照した関連モデルは次のとおりです。
ユーザー、学生、およびアカウントのモデル
public class User
{
[Key]
[Editable(false)]
[ForeignKey("UserProfile")]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
public int UserId { get; set; }
public virtual UserProfile UserProfile { get; set; }
[Display(Name = "First Name")]
[Required(ErrorMessage = "First name is required.")]
[MaxLength(50)]
public virtual string FirstName { get; set; }
[Display(Name = "Last Name")]
[Required(ErrorMessage = "Last name is required.")]
[MaxLength(50)]
public virtual string LastName { get; set; }
}
学生
public class Student : User
{
[ForeignKey("Account")]
[Editable(false)]
public virtual int AccountID { get; set; }
public virtual Account Account { get; set; }
[Column("ClassroomID")]
[ForeignKey("Classroom")]
public virtual int ClassroomID { get; set; }
public virtual Classroom Classroom { get; set; }
}
銀行口座
public class Account
{
[Key]
[Editable(false)]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
public virtual int AccountID { get; set; }
[DisplayFormat(DataFormatString = "{0:c}")]
[Column(TypeName = "money")]
public virtual decimal CheckingsTotal { get; set; }
[DisplayFormat(DataFormatString = "{0:c}")]
[Column(TypeName = "money")]
public virtual decimal SavingsTotal { get; set; }
public decimal AccountTotal()
{
return SavingsTotal + CheckingsTotal;
}