使用ORM和LINQ在架构上是否不合理?

使用ORM和LINQ在架构上是否不合理?,linq,tsql,architecture,orm,telerik,Linq,Tsql,Architecture,Orm,Telerik,我目前正在使用Telerik Open Access,这是令人讨厌的,但也就是说,一般来说,使用LINQ和ORM不会有架构问题吗 我突然想到,我们正在做的是将数据操作的负担从经过优化以执行该任务的DBMS转移到我的情况下不是的Web服务器 此外,至少在Telerik的案例中,我们限制了编码模型的灵活性。在这个项目中,我必须提取并创建不直接映射到CRUD接口的复杂数据结构。 至少在Telerik Open Access中,如果我使用存储过程来创建数据,但它没有映射到已知实体,那么我必须将数据作为对

我目前正在使用Telerik Open Access,这是令人讨厌的,但也就是说,一般来说,使用LINQ和ORM不会有架构问题吗

我突然想到,我们正在做的是将数据操作的负担从经过优化以执行该任务的DBMS转移到我的情况下不是的Web服务器

此外,至少在Telerik的案例中,我们限制了编码模型的灵活性。在这个项目中,我必须提取并创建不直接映射到CRUD接口的复杂数据结构。 至少在Telerik Open Access中,如果我使用存储过程来创建数据,但它没有映射到已知实体,那么我必须将数据作为对象数组返回

因此,我使用ORM创建的“实体”,并使用LINQ操作它们。 与相对简单的等效SQL语句相比,生成的代码复杂得可笑

我对你的观点很感兴趣,特别是关于使用ORM和LINQ的主张,以及这在架构上是否不合理

我当然有这种感觉


我没有包括代码示例,因为实际的代码是不相关的。也就是说,知道一个10行的T-SQL查询(其中6行是连接)已经变成了300行LINQ语句(包括空格)来做同样的事情可能会很有启发性。

如果您使用Linq2SQL或LINQ2实体,它们将实际生成SQL代码,“数据操作的负担”仍将由DBMS承担。您编写的Linq代码在大小上与SQL代码非常相似。

如果您使用Linq2SQL或LINQ2实体,它们将实际生成SQL代码,“数据操作负担”仍将由DBMS承担。您编写的Linq代码在大小上与SQL代码非常相似。

除了ORM之外,还使用Linq并不是架构上不可靠的


在数据库端和客户端总是有一些数据操作。作为一名开发人员,找到正确的平衡是你的责任。显然,如果您的ORM迫使您做一些复杂的事情,比如在客户端处理大量非类型化数据,并使用Linq对其进行大量查询,那么就有问题了。无论是使用ORM还是系统的设计方式。

在ORM之外使用Linq在架构上并不是不可靠的


在数据库端和客户端总是有一些数据操作。作为一名开发人员,找到正确的平衡是你的责任。显然,如果您的ORM迫使您做一些复杂的事情,比如在客户端处理大量非类型化数据,并使用Linq对其进行大量查询,那么就有问题了。无论是你的ORM还是你的系统设计方式。

我不同意10行T-Sql就可以转换300行LINQ语句。这是一个非常笼统、诱人的问题,所以要做好反对票的准备。显而易见的答案是“是的,很好”,因为数千名非常有能力的开发人员使用LINQtoSQL和实体对象框架。一个更有用的问题可能是“这里有10行T-SQL。如何将其简洁地写为LINQ查询?”答案可能是10行或更少的C#。如果Telerik Open Access因为糟糕的存储过程支持而“令人讨厌”,那怎么会怀疑所有的ORM?在没有linq的情况下使用LINQtoEntities或LINQtoSQL在体系结构上是不可靠的。OA的linq支持如何?你没有提到“投影”这个词,它可能(应该)是用简洁的linq语句创建“复杂结构”的方法。我不同意10行t-Sql语句可以转换300行linq语句。这是一个非常笼统的问题,所以要做好反对票的准备。显而易见的答案是“是的,很好”,因为数千名非常有能力的开发人员使用LINQtoSQL和实体对象框架。一个更有用的问题可能是“这里有10行T-SQL。如何将其简洁地写为LINQ查询?”答案可能是10行或更少的C#。如果Telerik Open Access因为糟糕的存储过程支持而“令人讨厌”,那怎么会怀疑所有的ORM?在没有linq的情况下使用LINQtoEntities或LINQtoSQL在体系结构上是不可靠的。OA的linq支持如何?您没有提到“投影”这个词,它可能(应该)是用简洁的linq语句创建“复杂结构”的方法。