循环通过强型字段实体框架C#



我试图为此问题提出一个整洁的解决方案,以使其可扩展。我有一个DataTable DT,其结构从数据库中读取。我希望能够使用实体框架正确地将此数据映射到正确的字段中,即使添加或删除了列,也允许代码运行。

using (Entities db = new Entities())
{
    foreach (DataRow dr in dt.Rows)
    {
        var result = db.myTable.SingleOrDefault(e => e.Email == dr["Email"].ToString());
        foreach (SourceToDestinationMapping s in mapping)
        {
            // want to do something like this
            result[s.DestinationColumn] = dt[s.DestinationColumn];
           // instead of this
           result.Name = dt["Name"].ToString();
           result.Address = dt["Address"].ToString();
           // all field mappings
        }
    }
}

这是可以做的吗?还是每次添加/删除新列时都需要进行代码更改?如果这不是有效的东西,那么我可以切换到没有实体框架的情况下进行这样的事情。

编辑:

示例是:1,电子邮件address,电子邮件,1

public partial class SourceToDestinationMapping
{
    public int MappingId { get; set; }
    public string SourceColumn { get; set; }
    public string DestinationColumn { get; set; }
    public bool Active { get; set; }
}

,因为实体框架与您需要使用反射的对象来获取和设置属性,而无需知道您需要操作哪些属性,并且如果您有多种类型,它可能会变得非常复杂您需要处理。因此,基本上检查您要查看的对象的类型,获取其属性列表,并在数据表行中搜索与属性(或其他约定(相同名称的列。但是,同样,您需要处理类型转换,如果属性是int,则需要将单元格值作为int等。

最新更新