C# 访问和填充另一个类';DAL BLL设置中的s属性
我想在C# 访问和填充另一个类';DAL BLL设置中的s属性,c#,asp.net,data-access-layer,business-logic-layer,C#,Asp.net,Data Access Layer,Business Logic Layer,我想在BLLServiceRequests中返回DALServiceRequest属性及其相应的DALRequest属性,因为我使用的SP是Request和ServiceRequest表之间的联接表。问题是当我点击以下代码时: var请求新项目= 普通托利斯特(dt) 它找不到我在DALServiceRequest的属性中设置的DALRequest属性。有人能告诉我正确的实施方法吗?多谢各位 BLL 公共类BLLServiceRequests { 公共列表GetServiceRequestByR
BLLServiceRequests
中返回DALServiceRequest
属性及其相应的DALRequest
属性,因为我使用的SP是Request
和ServiceRequest
表之间的联接表。问题是当我点击以下代码时:
var请求新项目=
普通托利斯特(dt)
它找不到我在DALServiceRequest
的属性中设置的DALRequest
属性。有人能告诉我正确的实施方法吗?多谢各位
BLL
公共类BLLServiceRequests
{
公共列表GetServiceRequestByRequestId(intrequestID)
{
var obj=新的DALServiceRequests();
返回obj.GetServiceRequestByRequestId(requestID);
}
}
达尔
公共类请求
{
公共类属性
{
公共int id{get;set;}
公共int请求类型{get;set;}
公共日期时间createDate{get;set;}
}
}
公共类DALServiceRequests
{
公共类属性
{
公共int id{get;set;}
public int requestId{get;set;}
公共字符串问题{get;set;}
public DALRequests.Properties请求{get;set;}//是否正确?
}
公共列表GetServiceRequestByRequestId(int requestID)
{
字符串cnStr=Common.dbConnStr;
SqlConnection cn=新的SqlConnection(cnStr);
SqlCommand cmd=新的SqlCommand();
DataTable dt=新的DataTable();
SqlDataAdapter=新的SqlDataAdapter();
cmd.CommandType=CommandType.storedProcess;
cmd.CommandText=“GetServiceRequestByRequestId”;
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue(“@requestID”,requestID);
尝试
{
cn.Open();
cmd.Connection=cn;
adapter.SelectCommand=cmd;
适配器填充(dt);
var requestNewProjects=Common.ToList(dt);
//上面的代码找不到已在DALServiceRequests.properties中定义的DALRequests属性
返回新项目;
}
捕获(例外情况除外)
{
掷骰子;
}
最后
{
cn.Close();
cn.Dispose();
cmd.Dispose();
dt.Dispose();
adapter.Dispose();
}
}
}
这是我在达尔的普通课。这里没什么可看的,它只是我用来将datatable转换为list的一个实用程序类
public static class Common
{
public static string dbConnStr = ConfigurationManager.ConnectionStrings["dbConnString"].ToString();
public static List<T> ToList<T>(DataTable table)
{
List<T> list = new List<T>();
T item;
Type listItemType = typeof(T);
for (int i = 0; i < table.Rows.Count; i++)
{
item = (T)Activator.CreateInstance(listItemType);
MapRow(item, table, listItemType, i);
list.Add(item);
}
return list;
}
private static void MapRow(object vOb, DataTable table, Type type, int row)
{
for (int col = 0; col < table.Columns.Count; col++)
{
var columnName = table.Columns[col].ColumnName;
var prop = type.GetProperty(columnName);
object data = table.Rows[row][col];
if (data == System.DBNull.Value)
{
}
else
prop.SetValue(vOb, data, null);
}
}
}
公共静态类公共
{
公共静态字符串dbConnStr=ConfigurationManager.ConnectionString[“dbConnString”].ToString();
公共静态列表收费表(数据表)
{
列表=新列表();
T项;
类型listItemType=typeof(T);
for(int i=0;i
为此,您可以使用
如果您将DALRequests
添加到DALServiceRequests
中,它将允许您访问DALRequests
中的所有属性,包括所有方法,但正如我看到的,您只有DALRequests中的属性
另一种方法是像以前一样将类定义为属性,但不使用.properties
public DALRequests request { get; set; }
然后,您可以通过以下方式访问属性:
DALServiceRequests req = new DALServiceRequests();
var somePropInfo = req.DALRequests.createDate;// Fill it correcly in line above
public class DALServiceRequests:DALRequests
public DALRequests request { get; set; }
DALServiceRequests req = new DALServiceRequests();
var somePropInfo = req.DALRequests.createDate;// Fill it correcly in line above