是否可以将静态属性放入存储库中,或者这是一种不好的做法

本文关键字:一种 或者 静态 属性 存储 是否 | 更新日期: 2023-09-27 18:11:52

我正在c#中使用MVP构建一个winform,我有一个存储库,从DB中检索所有数据,但要检索该数据,我不使用ID,而是由用户插入的引用(字符串),因此一旦用户插入该引用,我可以使用存储库中创建的所有函数来检查数据,显示一些信息并填充列表,因此用户可以选择缺失的信息。

这里有一个例子,

而不是这个:

public class DataRepository
{
    private readonly DataEntities dataContext;
    public DataRepository()
    {
        this.dataContext = new DataEntities();
    }
    public Data GetData(string reference)
    {
        //Retrieves from DB
    }
    public bool matchData(string reference)
    {
        //Retrieves from DB
    }
    public bool isValidData(string reference)
    {
        //Retrieves from DB
    }
}

我正在做这个:

public class DataRepository
{
    private readonly DataEntities dataContext;
    public static string reference{ get; set; }
    public DataRepository()
    {
        this.dataContext = new DataEntities();
    }
    public Data GetData()
    {
        //Retrieves from DB using 'reference'
    }
    public bool matchData()
    {
        //Retrieves from DB
    }
    public bool isValidData()
    {
        //Retrieves from DB
    }
}

谢谢! !

是否可以将静态属性放入存储库中,或者这是一种不好的做法

您应该考虑如何使用这个属性,以及它与存储库实例的生命周期和您拥有的实例数量之间的关系:

  • 如果存储库的不同方法需要接受不同的ref值,则使用方法参数。
  • 如果在存储库实例的生命周期内,存储库的所有方法都应该使用相同的ref值,则使用实例属性(并在构造函数中初始化)
  • 如果存储库的所有实例应该使用相同的ref值,那么它应该是静态属性