【问题标题】:difference between linq to sql and entity frameworklinq to sql和实体框架的区别
【发布时间】:2010-08-23 16:35:28
【问题描述】:

Linq to Sql 和实体框架之间存在很大差异,例如 Linq to SQL 是一对一映射,EF 是多对多映射,还有许多其他的可以在 Entity Framework vs LINQ to SQL

但是在这里我问的是 EF 和 Linq to Sql,我们是先创建实体然后生成表还是其他方式,以及这两种方法的优缺点是什么。 在 EF 中是否有任何业务实体从多个表中继承,并且不代表数据库中的任何内容。 Linq to Entities 和 EF 有区别吗?

如果问题不清楚或问错了,请告诉我。提前谢谢各位。

【问题讨论】:

    标签: .net linq linq-to-sql entity-framework


    【解决方案1】:

    对于“生产”版本,EF 和 L2S 都要求数据模型(阅读:数据库模式)在生成任何类之前就位。首先创建类然后从中生成 DB 的能力以 ScottGu blogged 最近的 EF4 CTP 的形式提供。

    就反映多个表的单个实体而言:我认为目前是一对一的关系:1 个表 = 1 个实体。

    【讨论】:

    • 感谢艾伦,是的,EF4 可以同时做到这一点。在开始一个新项目时,应该首选哪一个?以及为什么。
    • 根据微软的说法,在做 .NET 4.0 时,EF4 是做 O/RM 的首选方案。许多新技术将置于 EF(例如 WCF 数据服务)之上,虽然微软仍在修复 L2S 上的错误,但它不再被开发。或者正如他们所说的那样;它完成了;-)
    【解决方案2】:

    我相信无论是 EF 4 还是附加组件,您都可以先创建模型并让它生成您的数据库架构。在 EF 4 之前,使用 Linq-to-SQL 您需要从 DB 开始并映射模型。

    【讨论】:

    • 谢谢 Taylor,这里的首选方法是什么?
    • 不确定是否有“首选方法”。如果您已经有一个数据库,我会使用 Linq 工具在代码中对其进行建模。如果您正在开始一个全新的项目并且没有数据库,那么代码优先方法可能会更好
    • 确实:LINQ to SQL DataContext 类包含一个CreateDatabase 方法,允许您从模型构建数据库。 L2S 不包含为此生成 SQL 语句的功能,就像 EF4 设计器那样。但是,当您使用 Log 属性时,您可能会非常接近。
    【解决方案3】:

    在 linq to SQL 中,您首先创建一个数据库,然后导入它,构建应用程序并创建您的对象。

    我一开始学习 MVC 时就开始玩 EF,然后开始使用我使用 linq to SQL 的代码,而且,它都是 linq,在 linq 查询中没有真正的区别我可以告诉。

    【讨论】:

    • 肯定有区别。尤其是在 L2S 和 EF3.5 之间。例如 EF3.5 不支持 SingleSingleOrDefault。它不知道如何翻译具有Contain 方法的查询(例如:from c in db.Customers where ids.Contains(c.Id) select c)。除此之外,L2S 的性能和可读性要好得多。顺便说一句,所有这些都通过 EF4 修复。
    猜你喜欢
    • 2010-09-22
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 2011-01-15
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    相关资源
    最近更新 更多