1

这是我到目前为止得到的,但必须不断传递 DataClassesDataContext。我想知道是否有更好的更集中的方式来使用 DataClassesDataContext 并在每次使用数据上下文时填充连接字符串......提前感谢所有帮助

public interface ICustomerDataAccess
{
    string GetCustomerName(int customerId);
}

public class CustomerDataAccess : ICustomerDataAccess
{
    private readonly DataClassesDataContext _context;
    public CustomerDataAccess(DataClassesDataContext ctx)
    {
        _context = ctx;
    }

    public string GetCustomerName(int id)
    {
        return _context.Customers.Where(i => i.id == id).FirstOrDefault().name;
    }
}
public class DataAccessFactory
{
    public static ICustomerDataAccess GetCustomerDataAccessObj(DataClassesDataContext ctx)
    {
        return new CustomerDataAccess(ctx);
    }
}
public class CustomerService
{
    CustomerBusinessLogic _customerBL;

    public CustomerService(DataClassesDataContext ctx)
    {
        _customerBL = new CustomerBusinessLogic(new CustomerDataAccess(ctx));
    }

    public string GetCustomerName(int id, DataClasses1DataContext ctx)
    {
        return _customerBL.GetCustomerName(id,ctx);
    }
}
public class CustomerBusinessLogic
{
    ICustomerDataAccess _custDataAccess;
    public CustomerBusinessLogic(ICustomerDataAccess custDataAccess)
    {
        _custDataAccess = custDataAccess;
    }

    public CustomerBusinessLogic(DataClassesDataContext ctx)
    {
        _custDataAccess = new CustomerDataAccess(ctx);
    }
    public string GetCustomerName(int id, DataClassesDataContext ctx)
    {
        _custDataAccess = DataAccessFactory.GetCustomerDataAccessObj(ctx);
        return _custDataAccess.GetCustomerName(id);
    }
}

// 并在界面上使用这样的代码

private void button5_Click(object sender, EventArgs e)
    {
        
        using (var ctx = new DataClassesDataContext)
        {
            CustomerService customerSrv = new CustomerService(ctx);
            textBox1.Text = customerSrv.GetCustomerName(1, ctx);
        }       
    }
4

1 回答 1

0

您可以将通用存储库与依赖注入一起使用。这是第一次有点复杂的结构,但这可以解决您的问题。

我还与您分享一个很好的详细示例。那是我创造的

https://github.com/EyupCanARSLAN/N-Tier-Architecture-with-Generic-Repository--Dependency-Injection-And-Ninject/security/dependabot

还有一篇关于这个话题的文章

https://dotnettutorials.net/lesson/generic-repository-pattern-csharp-mvc/

于 2021-02-02T07:23:20.533 回答