【问题标题】:Creating an Enum value from Model First design using EF 6.1使用 EF 6.1 从 Model First 设计中创建枚举值
【发布时间】:2014-10-01 16:01:09
【问题描述】:

我只是想了解如何使用 Model First 设计将实体中的列创建为枚举类型。

在附图中,您可以看到我创建了一个简单的控制台应用程序(在右侧窗格中)并添加了一个 EDM 模型,其中包含一个名为 Teacher 的实体(在左侧)。

我单击了 EDM 设计器并选择了“添加新枚举类型”(您可以在中间窗格中看到)。这 3 种类型是 Permanent、Contract 和 Guest,在 TeacherType 枚举类型中的值分别为 1、2、3。

如何将左侧窗格中的 TeacherType **property 转换为中间窗格中的 Enum 值 TeacherType?**

另外,如果您更新模型,而模型又会更新数据库,您会丢失所做的更改吗?对于 Model First,我相信不会,但对于 DataBase First,我相信你会的。是否还有一种方法可以与我使用 DataBase First 做同样的事情?

Code First 很好,但我觉得它还有很长的路要走,因为您需要手动执行所有 Powershell 命令以及所有“额外包袱”,如定义关系、FK、播种等都在代码中。这会占用大量时间,而且我觉得在设计师身上可以轻松完成,速度更快,错误更少。

【问题讨论】:

    标签: c# powershell enums entity-framework-6


    【解决方案1】:

    要么右键单击属性并选择“转换为枚举”,这将创建一个新的枚举,要么右键单击属性并选择“属性”,然后在“属性”窗口中的“类型”行中选择您的枚举类型.请注意,“转换为枚举”菜单选项只会在属性已经是可以作为枚举基础类型的类型时显示(即字节、短、整数或长 - 注意 EDM 类型系统不支持无符号类型) .如果您的属性恰好是不同的类型(新创建的属性的默认类型是字符串),您将看不到“转换为枚举”菜单选项(因为字符串不是枚举类型的有效基础类型)。要在菜单中查看此选项,您必须首先转到属性并将类型更改为基础枚举类型之一。

    关于 Code First 使用 - EF 设计器现在支持从数据库创建 Code First 模型,因此您不再需要为现有数据库手动配置关系。

    【讨论】:

    • Pawel,我现在正在从数据库中采样 Code First 模型 --- 非常酷。我将数据库中的两个表添加到应用程序中。它创建了一个模型文件,其中包含 DbSet 实体以及属性和关联。它还为每个表创建了单独的 POCO 类。问题是:如果我需要添加/更新/删除属性怎么办?我知道我可以更改 POCO 类以添加/更新/删除属性并在 Model 类中反映相同的更改。如何将我在代码中所做的更改反映到数据库中?
    • 您需要决定是先做代码还是先做数据库(使用代码优先模型)。如果您有一个现有的测试数据库并且您不关心数据,您可以从现有数据库创建一个 Code First 模型,然后摆脱 Db 并继续通过代码发展您的数据库(理想情况下使用迁移)。如果你不能这样做,你应该改进数据库并在每次需要时重新创建你的模型。
    • 所以,我会 #1,将数据库放到 sql server 中; #2,如何将你在代码中所做的更改迁移到新的物理sql DB;或#3)如果我只是想跳过迁移,我可以通过我在上一篇文章中所说的重新创建我的模型,但是我现在如何将我的模型持久化到物理数据库?
    • 删除数据库后,只需运行应用程序,EF 将看到没有数据库并会为您创建一个。如果您每次添加迁移时都使用迁移(我强烈推荐),您运行Update-Database 命令,它将相应地更新数据库
    • OK 很好 --- 差不多了...我同意迁移是最好的选择。这样,您就不会丢失数据。但是,我在项目中的任何文件或菜单上都找不到“更新数据库”命令.....
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多