.net 对于EF4属性类型,请使用结构代替基元
我有一个EF4实体(代码优先),它包含一个int位掩码。我创建了一个位掩码结构,使使用位掩码更容易(提供bool属性来访问位)。bitmask结构包含重载隐式运算符,用于在int和int之间进行转换 我尝试将属性类型设置为bitmask结构,但返回值为0。我知道数据库中的值有一个值,而位掩码在我的单元测试中起作用。我将HasColumnType设置为“INT” 财产.net 对于EF4属性类型,请使用结构代替基元,.net,entity-framework-4,ef4-code-only,.net,Entity Framework 4,Ef4 Code Only,我有一个EF4实体(代码优先),它包含一个int位掩码。我创建了一个位掩码结构,使使用位掩码更容易(提供bool属性来访问位)。bitmask结构包含重载隐式运算符,用于在int和int之间进行转换 我尝试将属性类型设置为bitmask结构,但返回值为0。我知道数据库中的值有一个值,而位掩码在我的单元测试中起作用。我将HasColumnType设置为“INT” 财产 [Required] [Display(Name = "Display Pages Bitmask")] [Column(Name
[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");
}
模型创建时受保护的覆盖无效(ModelBuilder)
{
builder.Entity()
.Property(m=>m.DisplayPagesBitmask)
.HasColumnType(“INT”);
}
这可能吗?如果是这样,我需要做什么才能让它工作?您不能直接映射您的结构。必须映射int属性(将setter设置为内部或受保护),并提供第二个未映射属性(使用
NotMappedAttribute
或Ignore
方法)在内部设置映射整数属性的自定义类型。我使用计算属性struct
来获取在Entity Framework 6中使用SQLite的属性。
为ForSQLite
属性保护的访问修饰符对我不起作用。即使在我眼里他们应该是私人的或是受保护的
public Boolean ZystostatikaForSQLite {
get;
set;
}
public Boolean ImmunsupressivaForSQLite {
get;
set;
}
public Boolean AntikoagolanzienForSQLite {
get;
set;
}
public Boolean GlucokortikoideForSQLite {
get;
set;
}
// 4 Kategorien der Arzneimittel: Zytostatika, Immunsupressiva, Antikoagolanzien, Glucokortikoide
public struct PharmaceuticalCategories {
public Boolean Zystostatika;
public Boolean Immunsupressiva;
public Boolean Antikoagolanzien;
public Boolean Glucokortikoide;
};
public PharmaceuticalCategories medicineTaken {
get {
PharmaceuticalCategories pc = new PharmaceuticalCategories();
pc.Zystostatika = this.ZystostatikaForSQLite;
pc.Immunsupressiva = this.ImmunsupressivaForSQLite;
pc.Antikoagolanzien = this.AntikoagolanzienForSQLite;
pc.Glucokortikoide = this.GlucokortikoideForSQLite;
return pc;
}
set {
this.ZystostatikaForSQLite = value.Zystostatika;
this.ImmunsupressivaForSQLite = value.Immunsupressiva;
this.AntikoagolanzienForSQLite = value.Antikoagolanzien;
this.GlucokortikoideForSQLite = value.Glucokortikoide;
}
}
这方面有什么消息吗?我有一个结构类型属性,它封装了一个普通的int。自2013年以来有什么变化吗?是的,还要了解如何从类到结构