gpt4 book ai didi

entity-framework-4.1 - 使用 EF 代码优先的枚举 - 播种数据库然后使用的标准方法?

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:01 24 4
gpt4 key购买 nike

是否有在 EF 代码优先中使用枚举的标准方法?似乎有一些使用枚举包装类的示例。

但是,我希望能够定义枚举并使用数据库初始值设定项将枚举值也植入到数据库中。如果我必须从枚举中手动为数据库表设置种子,那么定义枚举和创建包装器似乎没有多大意义。

最佳答案

不幸的是,enums 在 EF 4.1 上不受原生支持。这是一篇关于如何处理它们的著名文章:Faking enums on EF 4 .但是,它确实需要一个包装器。

然而,在 EF 4 中有一种更简单的映射枚举的方法:只需在您的类上创建一个 int 属性来表示枚举的 int 值。这是 EF 应该映射的属性,然后有一个“迷你包装器”属性以允许您使用枚举。

public class Appointment 
{
public int ID { get; set; }
public string Description { get; set; }

// This property will be mapped
public int DayOfWeekValue { get; set; }

public DayOfWeek Day
{
get { return (DayOfWeek) DayOfWeekValue; }
set { DayOfWeekValue = (int) value; }
}
}

public enum DayOfWeek
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}

在生成数据库时,EF 会愉快地忽略它不知道如何映射的任何类型,但会映射 int 属性。

注意:这直接取 self 对另一个enumEF 问题的回答:EF 4.1 Code First - map enum wrapper as complex type

关于entity-framework-4.1 - 使用 EF 代码优先的枚举 - 播种数据库然后使用的标准方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11866880/

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