通过对接口进行编程来保持数据
我有一个IBankAccount接口,我将传递给ApplicationService。 帐户对象(在ApplicationService项目中)所做的更改需要保存在数据库中。 存储库使用IBankAccount接口接收更改。 我怎样才能把这个数据存入数据库? 这是使用LINQ to SQL实现的。
注意:以下是来自Scott的意见http://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspx “添加接口到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 { .. } }
读
-
优化存储库的SubmitChanges方法
-
如何在使用LINQ to SQL时抽象出持久性代码?
-
LINQ to SQL – 使用抽象基类时的映射exception
您的存储库应该接受BankAccount
– 不是IBankAccount
因为Linq-to-sql不知道什么是IBankAccount
,编译器不允许您先存储它,而不是先将它转换为BankAccount
(如果IBankAccount
实例不是BankAccount
)。
一旦您拥有BankAccount
您只需致电:
Context.BankAccounts.Add(account); Context.SubmitChanges();
据我所知,你需要模拟一个银行系统。 这意味着处理银行账户。 这是一个艰难的业务,不是“Hello World!”types的信息技术。
基本上与银行账户你需要:
- 阅读详细信息(如帐户名称,价值等)
- 借记帐户
- 信用账户
- 终止帐户
- 创build一个新账户
- …和其他操作
借记和贷记操作是所有这些操作中最“交易”的操作,因为这意味着您将一次编辑两个账户,并且想要同时编辑或同时失败。
这又是一个冒险的业务,因为它涉及到检查很多业务规则,从账户上有足够的钱开始(这不是那么简单,因为透支账户意味着你可以低于零),以确保存在一个持久的交易,从一个账户中扣除资金并向另一个账户添加资金。
此外,你必须检查一个人不会试图转移负数的金钱,因为这将是从其他帐户从字面上偷钱。 这个列表并没有停留在这里。 Scott Hanselman在银行工作了一段时间,对于需要检查什么,他可能会有所帮助。
总而言之,我的回答似乎是一个“不值得”的回应,你也可能会低估我,但是这个问题太深了,不能用一个叠加的回应来解决。
抱歉。