MVC -实体框架-它属于哪里?
本文关键字:属于 实体 框架 MVC | 更新日期: 2023-09-27 17:53:06
我有以下简化的类:
public class Customer
{
public int Id {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
public List<Account> Accounts {get; set;}
}
public class Account
{
public int Id {get; set;}
public Customer Customer {get; set;}
public int CustomerId {get; set;}
public string AccountNumber {get; set;}
public double AccountBalance {get; set;}
public int? SupercededAccountId {get; set;}
}
因此,使用Account类时,我需要访问被替换的帐户,它只是另一个帐户。我有一个被取代账户的记录,形式是被取代账户的id。虽然我意识到这是丑陋和错误的,但我已经向Account类添加了一个方法来检索我需要的帐户:
public Account SupercededAccount()
{
if (SupercededAccountId != null)
{
using (DataContext db = new DataContext())
{
Account supercededAccount = db.Accounts.Find(SupercededAccountId);
return supercededAccount;
}
}
else return null;
}
我不仅需要在帐户视图中访问被替换的Account对象,还需要在报告和后台任务中访问,因此我希望它以某种方式成为Model类的一部分。什么是正确的方式来获得对我需要的替代帐户值的访问?
创建一个导航器到已替换的Account
public class Account
{
[Key]
public int Id {get; set;}
[ForgienKey("Customer")]
public int CustomerId {get;set;}
//navigator to customer
public virtual Customer Customer {get; set;}
public string AccountNumber {get; set;}
public double AccountBalance {get; set;}
[ForgienKey("SupercededAccount")]
public int? SupercededAccountId {get; set;}
public virtual Account SupercededAccount {get;set;}
}
public class Customer
{
[Key]
public int Id {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
public virtual ICollection<Account> Accounts {get; set;}
}