Persist Data by Programming Against Interface

后端 未结 2 1711
无人共我
无人共我 2020-11-27 08:20

I have a IBankAccount interface that I will be passing to the ApplicationService. The changes made on the account objects (in the ApplicationService project) need to be pers

相关标签:
2条回答
  • 2020-11-27 08:47

    As far as I understand you need to model a banking system. This mean dealing with bank accounts. This is tough business that is no "Hello World!"-type information technology.

    Basically with bank accounts you need to :

    • Read details (such as account name, value, etc
    • Debit account
    • Credit account
    • Terminate account
    • Create a new account
    • ... and other operations

    The debit and credit operations are the most "transactional" operations of them all since these mean that you'll be editing two accounts at a time and you want to succeed both editings or fail both at once.

    This, again, is a risky business since it involves checking a lot of business rules beginning with having enough money on the account (that is not that simple since having an overdraft account means you can go below zero) all the way to ensuring there is a durable transaction that substracts money from one account and adds money to another one.

    Also you must check that a person does not try to transfer negative amounts of money because that will be literally stealing money from other accounts. And the list does not stop here. Scott Hanselman worked in a bank for some time and he might be of some help regarding what needs to be checked.

    All in all, my response seems to be a "not worthy" one and you might just as well downvote me but, again, the subject is too deep to be covered in a stackoverflow response.

    Sorry.

    0 讨论(0)
  • 2020-11-27 08:51

    Your repository should accept BankAccount - not IBankAccount because Linq-to-sql doesn't know what is IBankAccount and compiler doesn't allow you to store it without casting it first to BankAccount (that can obviously fail at runtime if IBankAccount instance is not a BankAccount).

    Once you have BankAccount you simply call:

    Context.BankAccounts.Add(account);
    Context.SubmitChanges();
    
    0 讨论(0)
提交回复
热议问题