我用entity framework 4的code first 在两表关联时如果一个字段为guid一个字段为string用ToString()方法强转时会报错,请问如何关联不同数据类型的字段。如下在on new { EmpGuid = emps.EmpGuid.ToString(), AreaCode = areaCode } equals new { EmpGuid = flowCode.ObjectId, AreaCode = flowCode.AreaCode }时报错了,数值型与字符型转换可以用SqlFunctions的方法实现,非数值型呢?
DbSet<tb_Emp_Manager_Zbdl> dbEmp = zbdlcontext.Emp_Manager;
DbSet<Tb_Corp_CompanyInfo_Zbdl> dbCompany = zbdlcontext.Corp_CompanyInfos;
DbSet<Tb_FlowCode_Zbdl> dbFlowCode = zbdlcontext.FlowCodes;
DbSet<Tb_Emp_Post_Zbdl> dbEmpPost = zbdlcontext.Emp_Post;
var query = from emps in dbEmp
join companies in dbCompany on emps.CorpGuid equals companies.CorpUserGuid
join flowCode in dbFlowCode on new { EmpGuid = emps.EmpGuid.ToString(), AreaCode = areaCode } equals new { EmpGuid = flowCode.ObjectId, AreaCode = flowCode.AreaCode } into jFlowCodes
from flowCodes in jFlowCodes.DefaultIfEmpty()
join post in dbEmpPost on emps.EmpGuid equals post.EmpGuid into jPosts
from posts in jPosts.DefaultIfEmpty()
select new tb_Emp_Manager()
{
EmpGuid = emps.EmpGuid,
AreaCode = emps.AreaCode,
FlowCode = flowCodes.FlowCode,
corpName = companies.CorpName
};
return query.ToList();
EF目前还不能像这样使用函数。
我知道EF目前不能使用ToString方法。有没有相关的方法替代?我这EF5的源码里面看到有构建SQL语句的CAST的表达式树的方法,但是不知道在EF5中如何使用。
@Ixitly: EF5里也不行,所以现在的话,只能是尽里采用相同的类型来处理。或者是用toList转换成list再处理。
@sinhbv: 绕了个小圈解决了。
楼上说的不错
http://www.cnblogs.com/humble/p/3320804.html
推荐使用Moon.ORM