2

我有一个将传递给 ApplicationService 的 IBankAccount 接口。对帐户对象(在 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
{
      ..
    }
}

阅读

  1. 优化 Repository 的 SubmitChanges 方法

  2. 使用 LINQ to SQL 时如何抽象出持久性代码?

  3. LINQ to SQL - 使用抽象基类时的映射异常

4

2 回答 2

3

您的存储库应该接受BankAccount- 不是IBankAccount因为 Linq-to-sql 不知道是什么IBankAccount并且编译器不允许您在不先将其转换为的情况下存储它(如果实例不是 a BankAccount,这显然会在运行时失败)。IBankAccountBankAccount

一旦你有BankAccount你只需调用:

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

据我了解,您需要为银行系统建模。这意味着处理银行账户。这是一项没有“Hello World!”类型信息技术的艰难业务。

基本上使用银行帐户,您需要:

  • 读取详细信息(例如帐户名称、值等)
  • 借方账户
  • 信用账户
  • 终止帐户
  • 创建一个新账户
  • ...和其他操作

借记和贷记操作是它们中最具“交易性”的操作,因为这些操作意味着您将一次编辑两个帐户,并且您希望两次编辑都成功或同时失败。

这又是一项有风险的业务,因为它涉及检查许多业务规则,从账户上有足够的钱开始(这并不是那么简单,因为拥有透支账户意味着你可以低于零)一直到确保有一种持久的交易,从一个账户中减去钱,然后向另一个账户增加钱。

此外,您必须检查一个人是否试图转移负金额,因为这实际上是从其他账户窃取资金。列表并不止于此。Scott Hanselman 在一家银行工作了一段时间,他可能会对需要检查的内容有所帮助。

总而言之,我的回答似乎是一个“不值得”的回答,你也可以对我投反对票,但同样,这个主题太深了,无法在 stackoverflow 响应中涵盖。

对不起。

于 2012-07-02T18:27:53.283 回答