在静态属性中访问数据库上下文

时间:2013-06-30 11:57:03

标签: c# asp.net

我正在通过以下方式访问我班级的静态列表:

public class Foo
{
    public static List<long> myList = new List<long>() { 1,2,3 }
}

using(EfEntities myDbContext = new EfEntities())
{
    var bar = Foo.myList;
}

它可以工作,但为了使它更多的数据驱动我想做这样的事情,同时尽可能保持属性静态(伪代码):

public class Foo
{
    public static List<long> myList
    {
        get
        {
            return dbContext.SomeTable.Where(x => x == 1).ToList();
        }
    }
}

我想在属性中使用myDbContext并传递数据库中的数据而不是硬编码列表。

有没有办法在没有实例化myDbContext的情况下使用属性中的Foo实例?

1 个答案:

答案 0 :(得分:1)

如何将其更改为方法?

public class Foo
{
    public static List<long> GetList(EfEntities dbContext)
    {
        return dbContext.SomeTable.Where(x => x == 1).ToList();
    }
}

......并使用它;

using(EfEntities myDbContext = new EfEntities())
{
    var bar = Foo.GetList(myDbContext);
}