linq中的映射对象(asp.net)

时间:2014-02-21 11:04:31

标签: asp.net linq

我想映射t和q。我可以这样做吗? (在asp.net中)

我想得到并将其映射到q以编辑记录

public void EdittblUser(tblUser t)
{
    var q = db.tblUsers.SingleOrDefault(u => u.userName == t.userName );
    //mapping here
    dbconnect.submitchange();
}

有些事情是这样的:

 var user = 
    dbconnect.tblUsers.SingleOrDefault(u => u.userName == _VOUser.Username);

if (user == null)
    // throw exception

Mapper.Map(tbluser, user);
dbconnect.SubmitChanges();
return true;

1 个答案:

答案 0 :(得分:2)

试试这个:

public void EdittblUser(tblUser t)
{
    var q = db.tblUsers.SingleOrDefault(u => u.userName == t.userName );
    if(q==null)
       // throw exception

    q.Property1=t.Property1;
    q.Property2=t.Property2;
    // and so on
    dbconnect.submitchange();
}

其中Property1Property2等是用户对象的属性。 (例如,它们将是userId,userName等等。)

编辑记录的另一种方法是使用AutoMapper:

// I suppose that you have made a reference of AutoMapper assembly in your project.
// Having done this then you should include it to your source file using the using 
// statement 
using AutoMapper;

public void EdittblUser(tblUser t)
{
    Mapper.CreateMap<Model1, Model2>();
    var q = db.tblUsers.SingleOrDefault(u => u.userName == t.userName );
    q = Mapper.Map(Model1, Model2)(t); 
    dbconnect.submitchange();
}

Model1和Model2是要在它们之间创建映射的类。

但是,由于t和q都属于同一类型,我不明白为什么要使用它。
有关AutoMapper的进一步说明,请查看codeproject中的这一个链接:

[http://www.codeproject.com/Articles/639618/CRUD-Opearations-using-AutoMapper-in-an-MVC-Applic][1]