.net - 使用结构代替 EF4 属性类型的原语

标签 .net entity-framework-4 ef4-code-only

我有一个包含 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 )并提供自定义类型的第二个非映射属性(使用 NotMappedAttributeIgnore 方法),该属性在内部设置映射的整数属性。

关于.net - 使用结构代替 EF4 属性类型的原语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4675817/

相关文章:

c# - Azure Blob 存储 SAS token 未正确形成 .NET

sql-server - 建立 SQL 连接需要 10 - 15 秒

c# - EF4 代码首先与外部实体建立多对多关系

ef4-code-only - 延迟加载不起作用

entity-framework - Entity Framework CTP 5 一对一映射

c# - LINQ to Entities 无法识别该方法并且无法将此方法转换为存储表达式

c# - 如何在调用函数时自动调用事件?

c# - 在没有回发的情况下重置 ASP.NET 中的页面

entity-framework-4 - LINQ to Entities 不支持指定的类型成员。仅支持初始值设定项、实体成员和实体导航属性

c# - 我应该在执行定期作业的单独线程中保留 DbContext 的实例吗