Asp.net mvc 3 请向我解释实体框架asp.net

Asp.net mvc 3 请向我解释实体框架asp.net,asp.net-mvc-3,entity-framework,Asp.net Mvc 3,Entity Framework,到目前为止,我一直在使用带有Linq to Sql的MVC3,以便所有模型都已预生成,我将自己创建数据库,然后将表移动到dbml编辑器上,如果我想更改表,我将删除编辑器上的实体并再次拖动它。它工作得非常好,但我注意到微软在EF方面做了很多工作,我可能也应该了解这一点 所以,读了一些文章后,我完全困惑了。我想从代码优先的方法开始,据我所知,这使开发人员首先为实体创建模型,然后模型创建数据库。这里最令人困惑的是,当我更改模型时,以及在运行时将我的模型与实体进行比较时,如果它确定两者不相同,它会删除所

到目前为止,我一直在使用带有Linq to Sql的MVC3,以便所有模型都已预生成,我将自己创建数据库,然后将表移动到dbml编辑器上,如果我想更改表,我将删除编辑器上的实体并再次拖动它。它工作得非常好,但我注意到微软在EF方面做了很多工作,我可能也应该了解这一点

所以,读了一些文章后,我完全困惑了。我想从代码优先的方法开始,据我所知,这使开发人员首先为实体创建模型,然后模型创建数据库。这里最令人困惑的是,当我更改模型时,以及在运行时将我的模型与实体进行比较时,如果它确定两者不相同,它会删除所有表并重新创建它们。如果是这样的话,我如何持久化我的数据?我如何存储我所有的桌子,这样它们就不会掉下来?我应该使用“数据库优先”的方法吗

请帮忙。谢谢

如果它确定这两个表不相同,则会删除所有表和 重新创建它们

默认情况下,您将获得一个异常。您必须明确指示应用程序删除并重新创建数据库。 我没有EF代码优先的经验(只有db优先),但我不喜欢在生产环境中删除和重新创建数据库。在开发过程中,这应该是好的

如何保存数据

使用

更多链接:

如果它确定这两个表不相同,则会删除所有表和 重新创建它们

默认情况下,您将获得一个异常。您必须明确指示应用程序删除并重新创建数据库。 我没有EF代码优先的经验(只有db优先),但我不喜欢在生产环境中删除和重新创建数据库。在开发过程中,这应该是好的

如何保存数据

使用

更多链接:


默认情况下,如果您的模型与数据库不匹配,Code first只会引发异常。听起来您已经创建(并设置)了一个“删除或重新创建”初始值设定项(IDatabaseInitializer),这将导致数据库的强制重新生成。您可以构建不同类型的初始值设定项,其中一个是EF 4.3.1中新增的,允许删除和重新创建。默认情况下,如果您的模型与数据库不匹配,则Code first将仅引发异常。听起来您已经创建(并设置)了一个“删除或重新创建”初始值设定项(IDatabaseInitializer),这将导致数据库的强制重新生成。您可以构建不同类型的初始值设定项,其中一个是EF 4.3.1中新增的,允许删除和重新创建。

您完全正确地看待实体框架,而不是Linq to Sql。微软将重点放在EF上,这才是前进的方向。实体框架有三个选项:

  • 数据库优先
  • 模型优先
  • 代码优先
使用database first,您将拥有一个用于为您创建模型的现有数据库。这是在一个设计器中完成的,该设计器将向您展示模型的外观,以及您可以在何处修改实体与数据库之间的映射

模型首先从一个空的设计器开始。创建实体,然后让实体框架为其创建数据库模式

使用代码优先,您没有设计器。相反,您可以在代码中创建实体,实体框架在运行时创建从实体到数据库的映射。这是通过一些约定(比如每个实体到它自己的表,Id属性作为主键)和您可以添加的自定义映射来完成的

从Linq到Sql的背景,模型优先/数据库优先可能听起来很熟悉。CodeFirst是一种新的方式,它吸引了那些想要创建一个纯粹是POCO的干净域模型的人。他们关注的是代码,而不是数据库

你可以用这三个做实验。它们都有一个共同的基础和一些额外的特性

创建数据库时,“代码优先”将有很多选项。您可以找到一些有助于入门的信息。您每次看到数据库被删除和重新创建的原因是由于数据库初始值设定项。您有几个用于创建、重新创建和更新数据库的选项


在开发环境中,可能最容易在每次模型更改时删除和创建数据库。您还可以使用一些初始测试数据为数据库种子。在生产环境中,您将使用代码优先迁移在每次模型更改时迁移数据库,以便保留数据

您完全正确地看到了实体框架,而不是Linq To Sql。微软将重点放在EF上,这才是前进的方向。实体框架有三个选项:

  • 数据库优先
  • 模型优先
  • 代码优先
使用database first,您将拥有一个用于为您创建模型的现有数据库。这是在一个设计器中完成的,该设计器将向您展示模型的外观,以及您可以在何处修改实体与数据库之间的映射

模型首先从一个空的设计器开始。创建实体,然后让实体框架为其创建数据库模式

使用代码优先,您没有设计器。相反,您可以在代码中创建实体,实体框架在运行时创建从实体到数据库的映射。这是通过一些约定(比如每个实体到它自己的表,Id属性作为主键)和您可以添加的自定义映射来完成的

从Linq到Sql的背景,模型优先/数据库优先可能听起来很熟悉。CodeFirst是一种新的方式,它吸引了那些想要创建一个纯粹是POCO的干净域模型的人。他们关注的是代码,而不是数据库

你可以用这三个做实验。Th