【问题标题】:SQL Server + Entity Framework basicsSQL Server + 实体框架基础知识
【发布时间】:2013-03-02 16:29:59
【问题描述】:

我的任务是用 C# 创建一个用于管理公司员工的程序。只是一个简短的概述 - 每个员工的所有信息都将存储在 MS SQL 数据库中。作为表示层,我必须使用 WPF 并作为与数据库的通信 - LINQ to Entities。

问题是 - 我设法自学了 WPF,但 SQL 是一件严肃的事情。我做了一些研究,但即使在阅读了许多不同的教程之后,我也没有找到任何令人满意的东西。我什至不明白这个模型的机制。我的理解是,在 SQL Server 中创建数据库根本什么都不做,因为从数据库创建实体模型后,它不再与 SQL Server 绑定。因此,更新创建的 SQL 数据库中的数据对程序本身不再有用。我可能错了,这很有可能,但我就是不明白。

那么,谁能指出我正确的方向?我什至必须知道什么才能开始?对于这样的菜鸟,也许有一些教程?

【问题讨论】:

    标签: c# sql-server database entity


    【解决方案1】:

    ADO.NET Entity Framework (EF) 最初是随 Visual Studio 2008 和 .NET Framework 3.5 Service Pack 1 一起发布的。到目前为止,许多人将 EF 视为 Microsoft 的另一个 ORM 产品,尽管按照设计它应该是比 ORM 工具强大得多。为这个新框架创建了一个新的数据访问提供程序 EntityClient,但在底层,ADO.NET 数据提供程序仍用于与数据库进行通信

    应用程序不再直接连接到数据库或查看任何特定于数据库的构造;整个应用程序根据更高级别的 EDM 模型运行。 这意味着您不能再使用本机数据库查询语言;不仅数据库无法理解 EDM 模型,而且当前的数据库查询语言也不具备处理 EDM 引入的元素(如继承、关系、复杂类型等)所需的构造。

    。 LINQ to Entities 允许开发人员使用 LINQ 表达式和 LINQ 标准查询运算符针对实体数据模型 (EDM) 创建灵活的强类型查询

    教程可以Found Here

    【讨论】:

    • 我的错误是假设 Enity 框架连接到一个文件。了解它连接到引擎有很大帮助。谢谢你:)
    • 您仍然可以发送原始 SQL
    【解决方案2】:

    基本上和你说的完全相反:

    据我了解,在 SQL Server 中创建数据库很简单 什么都不做,因为在创建实体模型之后 数据库,它不再与 SQL Server 绑定。所以更新数据 创建的 SQL 数据库不再对程序本身有用。

    实体框架 (EF) 连接到您的数据库并从您的 SQL Server 获取数据。从那时起,当您在应用程序中进行更改时,EF 将以“分离”模式运行。这可能是您困惑的根源。您缺少的部分是您告诉 EF 使用 ef.SaveChanges() 将在“分离”模式下所做的所有更改推送回您的数据库。因此,您在内存中进行更改,然后当您准备好时,您告诉 EF 将这些更改推送到数据库。

    现在到您的另一点,如果您直接对 SQL Server 进行更改(我可以看到会发生这种情况的场景),您肯定会遇到“分离”模式 EF 对象的问题。老实说,我不确定这里会发生什么,比我更有经验的人应该说,这是一个非常有趣的问题,我也想知道答案。

    以下是一些我觉得不错的教程信息:

    http://www.microsoft.com/downloads/details.aspx?FamilyID=355c80e9-fde0-4812-98b5-8a03f5874e96&displaylang=en 这实际上是在this 答案

    还有:

    http://www.codeproject.com/Articles/363040/An-Introduction-to-Entity-Framework-for-Absolute-B

    编辑:当我谈到分离模式时,请了解在 EF 内部有多种模式可供您操作,其中一种是分离模式。我讨厌在我的答案 b/c 中使用“分离模式”一词,我知道其他人会说这个词令人困惑,他们是正确的。请理解,在 EF 内部有一个“分离”模式,它在某种程度上是一个高级主题。

    【讨论】:

      【解决方案3】:

      Entity Framework 是非常简单且非常强大的 ORM。我对您的建议是从http://www.asp.net/entity-framework 开始。在这里,您可以找到很多入门教程,以帮助您在短时间内启动和运行。尽管这些教程与 ASP.NET 相关,但您可以非常轻松地理解它们并将它们与其他平台一起使用。

      【讨论】: