pan*_*apa 6 entity-framework entity-framework-core
我有EF7 RC1的问题.我无法在模型中使用枚举.我可以保存枚举属性.该值将转换为int.我的问题是在数据读取期间我得到了无效的强制转换异常.
谢谢
编辑:
枚举:
public enum LimitMode
{
Max,
Min,
MaxAndMin,
}
Run Code Online (Sandbox Code Playgroud)
模型:
public class SomeModel
{
(..)
public LimitMode LimitMode {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
SomeModel的ModelBuilder:
modelBuilder.Entity<SomeModel>(entity => {
(...)
entity.Property(p => p.LimitMode);
})
Run Code Online (Sandbox Code Playgroud)
EntityFrameworkCore 2.1 现在支持值转换器,这允许您将枚举视为数据库中的字符串,并将它们正确转换为模型中的枚举。
您可以使用值转换器来完成此操作。您可以创建自己的转换器,但 EF Core 2.1 附带了一些开箱即用的预定义值转换器。其中之一是 EnumToString 值转换器。
因此考虑到以下情况:
public class Rider
{
public int Id { get; set; }
public EquineBeast Mount { get; set; }
}
public enum EquineBeast
{
Donkey,
Mule,
Horse,
Unicorn
}
Run Code Online (Sandbox Code Playgroud)
使用默认转换器,如下所示:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.Entity<Rider>()
.Property(e => e.Mount)
.HasConversion<string>();
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢在模型类上使用属性,如下所示:
public class Rider
{
public int Id { get; set; }
[Column(TypeName = "nvarchar(24)")]
public EquineBeast Mount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这对我有用。我在project.json 中使用“EntityFramework.MicrosoftSqlServer”:“7.0.0-rc1-final”。作为推送模型的一部分,我必须运行 ef 迁移数据库更新。
public class Person
{
public int PersonId { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public int PersonTypeId { get; set; }
public PersonType PersonType { get; set; }
public ActiveType ActiveType { get; set; }
}
public enum ActiveType
{
Active = 0,
Inactive = 1
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7912 次 |
最近记录: |