C# 使用EF 5.0查找表
我是EF的新手,但我无法抗拒这个概念,现在我被卡住了。我正在开发一个web表单来代替纸质调查。数据结构有大量的查找表。我已经建立了基于EF的数据访问层(DAL)。我想创建一个用户控件,该控件可以传递给与查找表关联的实体,然后简单地将该实体绑定到dropdownlist,然而,我正在努力实现这一点所需的反射 我的代码如下:C# 使用EF 5.0查找表,c#,entity-framework,C#,Entity Framework,我是EF的新手,但我无法抗拒这个概念,现在我被卡住了。我正在开发一个web表单来代替纸质调查。数据结构有大量的查找表。我已经建立了基于EF的数据访问层(DAL)。我想创建一个用户控件,该控件可以传递给与查找表关联的实体,然后简单地将该实体绑定到dropdownlist,然而,我正在努力实现这一点所需的反射 我的代码如下: using System; using System.Collections.Generic; using System.Data.Entity;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace ABC.ABC.Controls
{
public partial class ABCQuestionSingle : System.Web.UI.UserControl
{
CareDAL.ABC.Entities DAL = new CareDAL.ABC.Entities();
private string dataTextField;
public string DataTextField
{
get { return dataTextField; }
set { dataTextField = value; }
}
private string dataValueField;
public string DataValueField
{
get { return dataValueField; }
set { dataValueField = value; }
}
private string entityName;
public string EntityName
{
get { return entityName; }
set { entityName = value; }
}
//I've tried this unsuccessfully!
public List<TEntity> GetList<TEntity>(string _name)
{
IEnumerable<TEntity> enumerable = (IEnumerable<TEntity>)(typeof(CareDAL.NDNQI.DST_ABCEntities).GetProperty(_name).GetValue(DAL, null));
return enumerable.ToList();
}
protected void Page_Load(object sender, EventArgs e)
{
ddlResponse.DataTextField = "PrimaryReason";
ddlResponse.DataValueField = "ReasonId";
ddlResponse.DataSource = DAL.PrimaryReasons.ToList();
ddlResponse.DataSource = GetList(entityName); //Obvious error, but not sure how to handle this!
ddlResponse.DataBind();
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Data.Entity;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
名称空间ABC.ABC.Controls
{
公共部分类ABCQuestionSingle:System.Web.UI.UserControl
{
CareDAL.ABC.Entities DAL=新的CareDAL.ABC.Entities();
私有字符串数据文本字段;
公共字符串数据文本字段
{
获取{return dataTextField;}
设置{dataTextField=value;}
}
私有字符串dataValueField;
公共字符串DataValueField
{
获取{return dataValueField;}
设置{dataValueField=value;}
}
私有字符串entityName;
公共字符串EntityName
{
获取{return entityName;}
设置{entityName=value;}
}
//我试过了,但没有成功!
公共列表GetList(字符串_名称)
{
IEnumerable enumerable=(IEnumerable)(typeof(CareDAL.NDNQI.DST_ABCEntities).GetProperty(_name).GetValue(DAL,null));
返回可枚举的.ToList();
}
受保护的无效页面加载(对象发送方、事件参数e)
{
ddlResponse.DataTextField=“PrimaryReason”;
ddlResponse.DataValueField=“ReasonId”;
ddlResponse.DataSource=DAL.primaryReasions.ToList();
ddlResponse.DataSource=GetList(entityName);//明显错误,但不确定如何处理!
ddlResponse.DataBind();
}
}
}
提前感谢您的建议 public分部类ABCQuestionSingle:System.Web.UI.UserControl
public partial class ABCQuestionSingle : System.Web.UI.UserControl
{
public void LoadDropDown<T>(string valueProperty, string textProperty)
where T : class
{
ddlResponse.DataTextField = textProperty;
ddlResponse.DataValueField = valueProperty;
ddlResponse.DataSource = new CareDAL.ABC.Entities().Set<T>();
ddlResponse.DataBind();
}
}
{
公共void加载下拉列表(string valueProperty、string textProperty)
T:在哪里上课
{
ddlResponse.DataTextField=textProperty;
ddlResponse.DataValueField=valueProperty;
ddlResponse.DataSource=new CareDAL.ABC.Entities().Set();
ddlResponse.DataBind();
}
}
然后,您可以从调用页面的加载事件(或任何其他事件)调用此方法。公共部分类ABCQuestionSingle:System.Web.UI.UserControl
{
公共void加载下拉列表(string valueProperty、string textProperty)
T:在哪里上课
{
ddlResponse.DataTextField=textProperty;
ddlResponse.DataValueField=valueProperty;
ddlResponse.DataSource=new CareDAL.ABC.Entities().Set();
ddlResponse.DataBind();
}
}
然后,您可以从调用页面的加载事件(或任何其他事件)调用此方法。工作正常。那会节省我很多时间。如果可以的话,我会请你喝一杯!工作得很好。那会节省我很多时间。如果可以的话,我会请你喝一杯!