gpt4 book ai didi

c# - 如何在 Entity Framework 中使用 Fluent API 以一对多关系映射枚举?

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:59 26 4
gpt4 key购买 nike

我的问题很简单,并且与另一个问题 (How to map an enum in a one-to-many relationship with NHibernate?) 相关,尽管我在这里特别询问 Entity Framework 的流畅 API。

假设(同一个示例)我的模型中有这两个实体,一个是引用类型(用户),另一个是枚举类型(角色)。

class User { int id; IList<Roles> Roles; }

enum Roles { Worker, Manager, Director }

或者为了清楚起见在此表示中...

[users]   [ roles ] 
+-----+ +-------+
| id | |user_id|
+-----+ +-------+
| value | <- [Represented by the enum]
+-------+

现在我想使用流畅的 API 将其映射到我在 Entity Framework 中的数据库,但是如果我尝试...

 HasMany(x => x.Roles)
.Cascade.All()
.Table("UserRoles")
.Element("RolesEnum");

...它将失败,因为 HasMany() 不是引用类型。

有没有一种方法可以在不涉及将我的业务模型从枚举更改为类的情况下在流畅的 API 中执行此操作?

最佳答案

这并没有直接回答您的问题,但您是否考虑过将 Role 枚举变成标志枚举并将其作为整数存储在 User 表中?

你可以这样做:

class User 
{
public int Id { get; set; }
public UserRole Roles { get; set; }
}

[Flags]
public enum UserRole
{
Guest = 0,
Worker = 1,
Manager = 1 << 2,
Director = 1 << 3,
}

然后要在用户表中存储多个角色,您可以像这样分配它们:

_user.Roles = UserRole.Worker | UserRole.Manager

关于c# - 如何在 Entity Framework 中使用 Fluent API 以一对多关系映射枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24630898/

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