我有一个包含 int 位掩码的 EF4 实体(代码优先)。我创建了一个 Bitmask 结构,以便更轻松地使用位掩码(提供 bool 属性来访问位)。位掩码结构包括重载的隐式运算符,用于在 int 之间进行转换。
我尝试将属性类型设置为位掩码结构,但值返回为 0。我知道数据库中的值有一个值,位掩码在我的单元测试中有效。我将 HasColumnType 设置为“INT”。
该属性(property)...
[Required]
[Display(Name = "Display Pages Bitmask")]
[Column(Name = "fDisplayPagesBitmask")]
public DisplayPagesBitmask DisplayPagesBitmask { get; set; }
从上下文对象...
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Website>()
.Property(m => m.DisplayPagesBitmask)
.HasColumnType("INT");
}
这可能吗?如果是这样,我需要做什么才能让它工作?
最佳答案
你不能直接映射你的结构。您必须映射 int 属性(使 setter 成为内部或 protected )并提供自定义类型的第二个非映射属性(使用 NotMappedAttribute
或 Ignore
方法),该属性在内部设置映射的整数属性。
关于.net - 使用结构代替 EF4 属性类型的原语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4675817/