LinQ to SQL和所有数据库的选择在哪里

时间:2017-04-24 02:51:18

标签: linq entity-framework-6

我有这样的源代码:

var res = from s in Splitting 
          join c in Customer on s.CustomerId equals c.Id
         where c.Id == customrId
            && c.CompanyId == companyId
        select s;

在查看代码时,一位成员说我的代码只适用于一个SQL数据库,并建议我使用LinQ实现加入,以便它适用于所有数据库。

我不明白,我认为,即使使用其他数据库,我们也会将其添加到实体框架中。以下代码也可以正常工作,对吧?

请告知。

1 个答案:

答案 0 :(得分:2)

您可以通过两种方式编写 LINQ

1。LINQ Query Expressions (query-syntax)(你做过的)

var res = from s in Splitting 
          join c in Customer on s.CustomerId equals c.Id
         where c.Id == customrId
            && c.CompanyId == companyId
        select s;

2.另一个是LINQ query extension methods (dot-syntax)

var res = Splitting.Join(Customer,
                 sp => sp.CustomerId,
                 cu => cu.Id,
                 (sp, cu) => new { sp, cu })
           .Where(s => s.cu.Id == customrId && s.cu.CompanyId == companId)
           .Select(s => s.sp);
  

对于联接,我更喜欢查询语法。有详细信息   查询语法隐藏了它可以让它值得拥抱它带来的可读性的改进。但是查询语法有点   在其他方面比 dot-syntax 更受限制。

     

dot-syntax 更简洁,但执行多个表连接是一场噩梦。另一方面是有一些LINQ   仅存在于 dot-syntax 中的操作:Single(),   First(),Count()等。对于查询语法的这些限制,您可以使用   点的语法。

N.B:在编译时,所有都转换为标准查询。