我有一个asp.net Web表单应用程序,它使用EF进行所有数据库活动。当页面加载时,我必须从不同的表中获取大量数据。我有一个DataAccessor类,我有一个Entity Framework DbContext(MyDBEntities)的成员变量。见下面的课程定义。
public class DataAccessor
{
public static DataAccessor Instance = new DataAccessor();
private MyDBEntities dbEntities = new MyDBEntities();
private DataAccessor()
{
}
public FetchTable_1_Data()
{
return dbEntities.Table1.Where( x => x.Id = something).List();
}
public FetchTable_2_Data()
{
return dbEntities.Table2.Where( x => x.Id = something).List();
}
public FetchTable_n_Data()
{
return dbEntities.TableN.Where( x => x.Id = something).List();
}
}
在页面加载中使用如下的数据访问器
Page_Load()
{
Repeater1.DataSource = DataAccessor.Instance.FetchTable_1_Data();
Repeater1.DataBind();
Repeater2.DataSource = DataAccessor.Instance.FetchTable_2_Data();
Repeater2.DataBind();
}
我的问题是,
我的数据库连接有时会中断,系统性能会降低,我怀疑是否使用了EF。有人可以建议我如何使用EF吗?
还有一些问题,
连接池如何与EF一起使用?
的connectionString ="元数据= RES:// /ReviewsDb.csdl|res:// /ReviewsDb.ssdl|res://*/MyDb.msl;provider=System。 Data.SqlClient; provider connection string =" data source = SERVER; initial catalog = MyDB; persist security info = True; user id = sa; password = mypwd; multipleactiveresultsets = True; application name = EntityFramework"&# 34;的providerName =" System.Data.EntityClient" />
我使用上面的连接字符串,我是否有连接池与上面的连接字符串?
如何在EF中配置连接
感谢对这些问题的任何帮助。 谢谢朋友们
答案 0 :(得分:1)
您的dataaccessor是一个静态成员。
远离使用static
,因为它可能在页面访问之间存在。不难想象会造成什么样的伤害。
当我这样做时,我从上一页访问中得到了数据库错误。我不得不抓了很多头。
在比较时使用==
代替=
。
您不必使用using
。
我实际上建议您拥有一个数据访问器,Page_Load
将使用var accessor = new DataAccesssor();
创建一个数据访问器,而不是使用私有构造函数的方法。
现在您将清楚MyDbEntities
实例的生命周期。它将作为您Page_Load
函数的范围。