2016-06-28 5 views
2

У меня есть следующие упрощенные классы:MVC - Entity Framework - Где это?

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 мне нужен доступ к вытеснены счетам, который только другой счет. У меня есть запись с сохраненной учетной записью в виде идентификатора зарегистрированной учетной записи. Хотя я понимаю, что это некрасиво и неправильно, я добавил метод в класс 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. Каков правильный способ получить доступ к перечисленным выше значениям учетной записи?

ответ

1

Создать навигатор замененного счета

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;} 
} 
+0

Ok совершенного. На шаг впереди. Мне также нужен доступ ко всем предыдущим учетным записям для этого клиента. Я оставил его выше, но у меня также есть способ получить те, которые в основном такие же, как и выше, кроме того, что он возвращает список учетных записей, в которых CustomerId = Account.CustomerId и! = Текущий идентификатор – georgewillow

+0

Обновлено, просто используйте навигатор учетных записей и linq один, который вы хотите. –

+0

Могу ли я поместить это в метод для легкого доступа? Таким образом, у меня может быть метод List PreviousAccounts() в классе Account, который возвращает Customer.Accounts.Where (i => i.Id! = This.Id)? – georgewillow

Смежные вопросы