使用AutoMapper进行无外键的JOIN操作

时间:2014-06-20 11:48:39

标签: linq join automapper

我有db TABLES:

Company(CompanyId, Name, UserId, CompanyType, Uid)
User(UserId, FirstName, LastName, SocialNumber)

在应用程序MODEL:

CompanyModel(CompanyId, Name, CompanyType, Uid, UserName)

由于 CompanyModel Company 有许多相同的类型和名称字段,因此我倾向于使用AutoMapper来避免明确写出所有这些字段。 但在这里我现在需要获得UserName。 如果 UserId 有FK,我可以这样做:

var mapper = Mapper.CreateMap<Company,CompanyModel>();
mapper.ForMember(
    d => d.UserName, 
    s => s.MapFrom(a => a.User.FirstName + " " + a.User.LastName));
var q = companyQuery.Project().To<CompanyModel>();

公司表中的 UserId 没有外键关系约束用户,我无法创建它。 所以目前我正在加入:

var r =
from c in companyQuery
join u in userQuery on c.UserId equals u.UserId
select new CompanyModel
{
     CompanyId = c.CompanyId,
     Name = c.Name,
     CompenyType = c.CompanyType,
     Uid = c.Uid,
     UserName = u.FirstName + " " + u.LastName
};

我想知道是否有任何方法可以使用AutoMapper,以及如何做到这一点?所以我可以跳过命名所有字段(这只是示例,还有更多的字段)。

有人熟悉这个吗?

0 个答案:

没有答案