Linq-to-SQL与数据库优先的实体框架

本文关键字:实体 框架 数据库 Linq-to-SQL | 更新日期: 2023-09-27 18:21:32

在遵循数据库优先的方法时,我对Linq to SQL和实体框架之间的区别感到困惑,因为我找不到任何明显的区别。

在我的案例中,当我使用Linq-to-SQL时,我曾经创建表,然后使用Linq--to-SQL创建表示表的类,现在当我切换到实体框架时,我仍然遵循相同的步骤(创建数据库表,然后用EF创建关联的类)。

我以相同的方式与这些类交互,例如,我曾经使用相同的语法和方法查询User类,但一次是使用Linq to SQL创建User类,另一次是用EF创建,,那么区别在哪里

        public IQueryable<User> findstudents(string term)
        {
            return from student in entities1.Users
                   where student.UserID.Contains(term)
                   select student;
        }

第二个问题如果我使用EF将表映射到类中,是否仍然可以在同一应用程序中使用Linq到SQL来查询EF类?

Linq-to-SQL与数据库优先的实体框架

LINQ是一项基本技术-这是在C#中为您提供SQLish查询选项的语法-它完全独立于您是将LINQ用于SQL还是EF。因此,如果您想使用LINQ语法查询数据类,您可以对这两个框架都这样做,但一旦使用了LINQ-to-SQL和LINQ-to-Entities。不能对实体框架EDMX模型使用Linq到SQL。

Linq to SQL很棒

  • 如果您需要非常简单的1:1映射-一个表等于域模型中的一个类
  • 如果您只需要SQL Server(Linq-to-SQL不支持任何其他功能)
  • 如果你想快速启动并运行

另一方面,实体框架

  • 支持多个后端(SQL Server、Oracle、Firebird-其他可能会出现)
  • 支持完整的概念数据建模策略-在数据库中定义物理模型,在应用程序中定义概念模型,以及两者之间的映射
  • 使您能够处理诸如将单个业务实体映射到多个表之类的事情
  • 支持按层次结构的表和按类的表继承方案
  • 支持在情况发生变化时从数据库中刷新/更新模型(EDMX文件)(在Linq到SQL中,您基本上必须删除并重新创建所涉及的实体,从而丢失您可能进行的所有自定义)

简言之:Linq-to-SQL是SQL Server的一个伟大、简单、简洁的ORM——如果它能满足您的所有需求,请使用它。实体框架是一个完全不同的野兽,功能更强大,但也更复杂,更大-非常适合你的下一个企业关键应用程序,但可能对你的个人博客应用程序来说有些过头了:-)

如果你想创建一个"经得起未来考验"的东西,并将使用微软正在推向未来的OR技术,那么你应该选择实体框架。特别是在v4中,它也比以往任何时候都更容易使用,更精简,更有用。