![](/img/trans.png)
[英]SELECT COUNT (ColumnName) Group By [ColumnName] in Linq C#
[英]Separating columnName and Value in C#
我有一个雇员对象,如下所示
class emp
{
public int EmpID { get; set; }
public string EmpName { get; set; }
public int deptID { get; set; }
}
我需要在此类或其他类中创建映射,以使用SQL的列名称映射属性
for eg. EmpdID="employeeID"
EmpName="EmployeeName"
deptID="DepartmentID"
当我从asp.net页创建雇员类并将其传递给函数时:
for eg: emp e=new emp();
e.EmpID=1;
e.EmpName="tommy";
e.deptID=10;
当emp对象被填充并传递给buildValues函数时,它应该返回ComumnName(egemployeeID):Value(eg1),EmployeeName:tommy,DepartmentID:10)的数组
string[] values=buildValues(emp);
public string[] buildValues(emp e)
{
string[] values=null;
return values;
}
我有两个问题:1.在哪里指定映射2.如何在上面显示的buildValues函数中使用映射并构建值字符串数组。
如果您能帮助我,我将不胜感激
您需要使用反射。
具体来说,您需要遍历typeof(Employee).GetProperties()
。
这是一个已解决的问题。 对ORM进行一些研究,看看这个SO问题: .Net ORM与MySQL很好地兼容
首先(如前所述),最好将这种映射留给ORM工具,而不必理会它们。 但是,ORM工具在保护您免受数据访问等细节的侵扰方面往往过于“母性”,因此扩展它们或更改其行为可能会很复杂。
就是说,您可以创建一个特殊的类(映射),其中包含所有映射代码。 映射本身最好保存在字典中,如下所示:
static class Mappings
{
private static Dictionary<Type, Dictionary<string, string>> TypeMappings;
private static Dictionary<string, string> EmployeeMapping;
//... other mapped classes
static Mappings()
{
TypeMappings = new Dictionary<Type, Dictionary<string, string>>();
EmployeeMapping = new Dictionary<string, string>();
EmployeeMapping.Add("EmpID", "EmployeeID");
EmployeeMapping.Add("EmpName", "EmployeeName");
EmployeeMapping.Add("DeptID", "DepartmentID");
TypeMappings.Add(typeof(Employee),EmployeeMapping);
//... other mapped classes
}
public static string[] BuildValues<T>(T item)
{
if (!TypeMappings.ContainsKey(typeof(T)))
throw new Exception("wrong call");
Dictionary<string, string> mapping = TypeMappings[typeof(T)];
List<string> results = new List<string>();
foreach (var keyValuePair in mapping)
{
string propName = keyValuePair.Key;
string dbName = keyValuePair.Value;
PropertyInfo pi = typeof(T).GetProperty(propName);
object propValue = pi.GetValue(item, null);
results.Add(string.Format("{0}:{1}", dbName, propValue));
}
return results.ToArray();
}
}
这里,TypeMappings是所有映射类的字典,其映射映射又位于propertyName-databaseName字典中。
BuildValues方法采用这些名称,反映值并构建结果字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.