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类的一部分。什么是正确的方式来获得对我需要的替代帐户值的访问?

MVC -实体框架-它属于哪里?

创建一个导航器到已替换的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;}
}