2

ApplicationService に渡す IBankAccount インターフェイスがあります。アカウント オブジェクト (ApplicationService プロジェクト内) に加えられた変更は、データベースに永続化する必要があります。リポジトリは、IBankAccount インターフェイスを使用して変更を受け取ります。このデータをデータベースに保存するにはどうすればよいですか? これは、LINQ to SQL を使用して実装されます。

注: 以下はhttp://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspxScottからのコメントです。 LINQ to SQL データ モデル クラスに追加します。LINQ to SQL クラスは部分クラスです。つまり、インターフェイスを直接追加できます。"

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<System.DateTime> OpenedDate { get; set; }
    string Status { get; set; }
    System.Nullable<int> 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
{
      ..
    }
}

読む

  1. リポジトリの SubmitChanges メソッドの最適化

  2. LINQ to SQL を使用する場合、永続化コードをどのように抽象化しますか?

  3. LINQ to SQL - 抽象基本クラスを使用する場合のマッピング例外

4

2 に答える 2

3

リポジトリは受け入れる必要があります-Linq-to-sqlが何であるかを認識BankAccountせず、コンパイラーが最初にキャストせずに保存することを許可しないためではありません(インスタンスが a でない場合、実行時に明らかに失敗する可能性があります)。IBankAccountIBankAccountBankAccountIBankAccountBankAccount

取得したら、次BankAccountのように呼び出します。

Context.BankAccounts.Add(account);
Context.SubmitChanges();
于 2012-07-02T09:55:52.133 に答える
0

私の知る限り、銀行システムをモデル化する必要があります。これは、銀行口座を扱うことを意味します。これは、「Hello World!」タイプの情報技術ではないタフなビジネスです。

基本的に、銀行口座では次のことを行う必要があります。

  • 詳細の読み取り (アカウント名、値など)
  • 借方勘定
  • クレジット口座
  • アカウントを終了する
  • 新しいアカウントを作成する
  • ...およびその他の操作

借方と貸方操作は、それらすべての中で最も「トランザクション」操作です。これは、一度に 2 つのアカウントを編集し、両方の編集を成功させるか、両方を同時に失敗させる必要があることを意味するためです。

これもリスクの高いビジネスです。口座に十分な資金があることから始めて、多くのビジネス ルールをチェックしなければならないからです (当座貸越口座を持っているとゼロ以下になる可能性があるため、それほど単純ではありません)。ある口座からお金を引き落とし、別の口座にお金を追加する永続的なトランザクション。

また、他のアカウントから文字通りお金を盗むことになるため、人がマイナスの金額を送金しようとしないことを確認する必要があります。そして、リストはここで止まりません。Scott Hanselman はしばらくの間銀行で働いていました。

全体として、私の回答は「価値がない」ものであるように思われ、あなたは私に反対票を投じるかもしれませんが、繰り返しになりますが、主題は深すぎてスタックオーバーフローの回答でカバーできません。

ごめん。

于 2012-07-02T18:27:53.283 に答える