我能够将枚举作为字符串存储在数据库中.
builder.Entity<Company>(eb =>
{
eb.Property(b => b.Stage).HasColumnType("varchar(20)");
});
Run Code Online (Sandbox Code Playgroud)
但是,当需要查询时,EF不知道将字符串解析为枚举.我该如何查询:
context
.Company
.Where(x => x.Stage == stage)
Run Code Online (Sandbox Code Playgroud)
这是一个例外:将varchar值'Opportunity'转换为数据类型int时转换失败
我正在努力使用我的读模型,因为它是域逻辑和读模型之间的混合.想象一下获得酒店或航空公司的报价.在我的实例中它正在发货.要获得报价,您需要阅读现有的费率表,然后计算费率.您可以将此记录为报价,最终变成订单,但获取报价部分本质上是一个读数,其中一些逻辑(即获得当前燃料费率的服务)将其计入费率.汇总将是报价.
那么您是否会使用读取模型来获取合同/费率表,并将其映射到域?请记住,读取将被优化,它不仅仅是一个简单的GetByID ...并且最好来自读取存储以获得性能.
我所拥有的是这样的:
public class Rate
{
public List<Charge> CarrierCharges { get; set; }
public List<Charge> CustomerCharges { get; set; }
public List<Charge> ThirdPartyCharges { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我需要它映射到这个:
public class Quote
{
public List<Charge> Charges { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
需要做的是需要将其添加到报价单上的费用列表中。另外棘手的部分是,在报价费用上,有一个类型字段需要根据它映射的列表进行设置。因此,如果它们是 CarrierCharges,则需要将类型设置为 Carrier 等。我正在使用 AfterMap 执行此操作,但我想我会询问是否有更好的方法。