使用结构代替EF4属性类型的基元

Bri*_*ian 6 .net entity-framework-4 ef4-code-only

我有一个包含int位掩码的EF4实体(代码优先).我创建了一个Bitmask结构,以便更容易地使用位掩码(提供bool属性来访问位).位掩码结构包括用于转换为int和从int转换的重载隐式运算符.

我尝试将属性类型设置为位掩码结构,但值返回为0.我知道数据库中的值有一个值,并且位掩码在我的单元测试中有效.我将HasColumnType设置为"INT".

物业......

[Required]
[Display(Name = "Display Pages Bitmask")]
[Column(Name = "fDisplayPagesBitmask")]
public DisplayPagesBitmask DisplayPagesBitmask { get; set; }
Run Code Online (Sandbox Code Playgroud)

从上下文对象...

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Entity<Website>()
        .Property(m => m.DisplayPagesBitmask)
        .HasColumnType("INT");
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?如果是这样,我需要做些什么才能让它发挥作用?

Lad*_*nka 4

您无法直接映射您的结构。您必须映射 int 属性(使 setter 为内部或受保护),并提供自定义类型的第二个非映射属性(使用NotMappedAttribute或方法),该属性在内部设置映射的整数属性。Ignore

  • 有关于这个主题的消息吗?我有一个封装普通 int 的结构类型属性。自2013年以来有什么变化吗? (2认同)