2

我首先使用带有迁移和代码的 EF 5。这一切都很好,但有一些问题/问题我想解决。

让我们从一个简单的例子开始。假设我有一个用户表和一个用户类型表。用户类型表是我的应用程序中的枚举/查找表。所以用户表有一个 UserTypeId 列和一个外键 ref 等到 UserType。在我的 poco 中,我有一个名为 UserType 的属性,它具有枚举类型。

要将初始值添加到 UserType 表(或稍后添加/更改值)并在初始迁移器等中创建表。我需要一个 UserType 表 poco 来表示数据库中的实际表并在地图文件中使用。我将 User poco 中的 UserType 属性映射到 UserType poco 中的 UserTypeId。所以现在我有一个用于代码优先/迁移/上下文映射等的 poco,并且我有一个枚举。两者不能有相同的名称,所以我是否有一个名为 UserType 的 poco 和枚举的其他名称,或者 UserType 的 poco 是 UserTypeTable 之类的?

然而,更重要的是,我是否遗漏了代码首先如何工作的一些关键元素?我尝试了上面的示例,运行了 Add-Migration,但它没有为枚举添加查找表。

4

2 回答 2

2

如果我正确理解你的问题和你的困惑,

Enums support has nothing to do with lookup tables on the Db side.  

枚举只是允许您在类中具有 Enum-s 的属性,并且基本上被翻译为“int”-s - 所以那里没有什么其他东西。

有关更多信息,您可能想观看Julie Lerman 关于 Enum-s 支持的视频

希望这可以帮助

于 2012-04-13T17:29:21.913 回答
0

以我的经验,枚举对您的代码比查找类更重要,因此请给它正确的名称。我还将保持查找类与我的模型中的用户没有任何关系。如果它真的只是用于查找,那么你不需要它挂在你的用户身上。带有 a 的枚举DescriptionAttribute可以完成代码中的查找。

UserTypeLookup可能是一个好名字,因为这听起来像你将使用它的目的。然后您可以使用该类来维护表。

假设您没有首先映射 ef 代码之间的关系UserTypeLookupUser那么您唯一需要在数据库中手动创建的是表中的UserType列与User表中的 PK之间的外键关系UserTypeLookupUserTypeLookup仍然可以是一个实体,即使您没有为它设置任何关系,EF 仍应为其生成数据库表。

于 2012-04-13T17:26:08.633 回答