Persistere i dati programmando contro l’interfaccia

Ho un’interfaccia IBankAccount che passerò all’ApplicationService. Le modifiche apportate agli oggetti account (nel progetto ApplicationService) devono essere mantenute nel database. Il repository riceve le modifiche utilizzando l’interfaccia IBankAccount. Come posso mantenere questi dati nel database? Questo è implementato usando LINQ to SQL.

Nota: Segue un commento di Scott in http://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspx “Aggiungi le interfacce alle classi del modello di dati LINQ to SQL Le classi LINQ to SQL sono classi parziali, il che significa che è ansible aggiungere l’interfaccia direttamente a esse. ”

public class LijosSimpleBankRepository : ILijosBankRepository { public System.Data.Linq.DataContext Context { get; set; } public virtual void UpdateAccount(DomainInterfaces.IBankAccount iBankAcc) { DBML_Project.BankAccount bankAccount; } } namespace DomainInterfaces { public interface IBankAccount { int BankAccountID { get; set; } string AccountType { get; set; } System.Nullable OpenedDate { get; set; } string Status { get; set; } System.Nullable AccountOwnerID { get; set; } } } namespace DBML_Project { public class FixedBankAccount : BankAccount { //Note: BankAccount already implemnts IBankAccount } public class SavingsBankAccount : BankAccount { //Note: BankAccount already implemnts IBankAccount } //The auto generated calss is made as abstract [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.BankAccount")] [InheritanceMapping(Code = "Fixed", Type = typeof(FixedBankAccount), IsDefault = true)] [InheritanceMapping(Code = "Savings", Type = typeof(SavingsBankAccount))] public abstract partial class BankAccount : INotifyPropertyChanging, INotifyPropertyChanged, DomainInterfaces.IBankAccount { .. } } 

LETTURA

  1. Ottimizzazione del metodo SubmitChanges del repository

  2. Come si estrae il codice di persistenza quando si utilizza LINQ to SQL?

  3. LINQ to SQL: mapping delle eccezioni quando si utilizzano le classi di base astratte