gpt4 book ai didi

c# - 使用 Entity Framework 6.1 和 MVC 5 从数据库使用 Code First 后如何同步模型?

转载 作者:IT王子 更新时间:2023-10-29 03:47:01 26 4
gpt4 key购买 nike

假设

  • 使用 EF 6.1、MVC 5、VS 2013、C#

  • 我有一个在 Toad DM 中为 SQL Server 设计的现有数据库模型,保持它始终更新非常重要

步骤和注意事项

  1. 使用 ADO.NET 实体数据模型,我选择了数据库中的代码优先(EF 6.1 中的新功能)来生成模型。注意:模型类和 DbContext 类已成功生成,但未生成 .edmx 或 .tt 文件

  2. 接下来我添加了一个新的脚手架项目:带 View 的 MVC 5 Controller ,使用 Entity Framework 。注:成功,生成 Controller 和 View

问题

从现在开始,我不想使用 Code First 来更新我的数据库。相反,我希望根据数据库更改更新模型。接下来做什么?如果我没有 edmx 文件,我将无法从数据库更新我的模型类吗?

最佳答案

实体数据模型向导的 Code First from Database 在创建您的实体类方面做得非常出色,就好像它们是以 Code First 风格创建的一样。您要问的是,是否有任何方法可以使这些类随着数据库的更改而保持最新,类似于 EDMX 样式“从数据库更新模型”。根据我的研究,使用内置工具不可能可以做到这一点。但是,这是我发现有用的一种解决方法:

假设我有一个包含产品表和客户表的数据库。最初我创建了一个 StoreDBContext 类,并选择了产品作为我的对象之一。现在我想将客户表作为新实体添加到现有上下文中。以下是使用代码优先向导执行此操作的方法:

  1. 创建一个新的实体数据模型,将其命名为 StoreDBContextTemp 或其他名称 Add new item
  2. 首先从数据库向导选项中选择代码 code first from database
  3. 选择客户作为要添加的对象(仅客户)并完成向导 add table
  4. 打开新创建的上下文文件,StoreDBContextTemp.cs ,并复制新添加实体的虚拟属性:

public virtual DbSet<Customer> Customers {get; set;}

  1. 将这些新属性粘贴到您的原始文件中 StoreDBContext.cs数据库上下文类。
  2. 删除StoreDBContextTemp.cs,并在app.config/web.confg等中去掉StoreDBContextTemp的连接字符串
  3. 您现在可以在 StoreDBContext 类上使用 Customer

如果您添加或删除表,您将需要手动调整字段,但至少您不需要在每次将新表添加到模型时都手写许多属性。

关于c# - 使用 Entity Framework 6.1 和 MVC 5 从数据库使用 Code First 后如何同步模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22637350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com