循环遍历强类型字段实体框架c#

时间:2017-05-05 14:58:46

标签: c# entity-framework

我正在尝试为此问题提出一个简洁的解决方案,以使其可扩展。我有一个DataTable dt,它的结构是从数据库中读取的。我希望能够使用Entity Framework将此数据正确映射到正确的字段,并允许代码即使添加或删除列也能正常运行。

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,EmailAddress,Email,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; }
}

1 个答案:

答案 0 :(得分:0)

由于Entity Framework与对象一起工作,您需要使用反射来获取和设置属性,而不需要知道您需要操作哪些属性,如果您需要处理许多类型,它会变得非常复杂。因此,基本上检查您正在查看的对象的类型,获取其属性列表,并在数据表行中搜索与属性(或您拥有的其他约定)同名的列。但同样,您需要处理类型转换,如果属性是int,则需要将单元格值作为int等。