【发布时间】:2015-09-30 08:22:51
【问题描述】:
我们有一个枚举Supplier
但现在我们还需要一些关于该关系的域数据
所以在 99.9% 的域代码中,我们对枚举进行操作,例如 product.Supplier == Suppliers.FedEx
但现在我们还添加了product.SupplierInfo.CanAdjustPickupTime,其中SupplierInfo 是一个实体,而不仅仅是一个简单的枚举类型。
我已经尝试过这些配置
Property(p => p.Supplier)
.IsRequired()
.HasColumnName("SupplierId");
HasRequired(p => p.SupplierInfo)
.WithMany()
.HasForeignKey(p => p.Supplier); //I have also tried casting to int doing .HasForeignKey(p => (int)p.Supplier)
这将失败
指定表达式的 ResultType 与 必需的类型。表达式 ResultType 是 'MyApp.Model.Suppliers' 但所需的类型是 'Edm.Int32'。参数名称:keyValues[0]
也试过了
Property(l => l.Supplier)
.IsRequired()
.HasColumnName("SupplierId");
HasRequired(p => p.SupplierInfo)
.WithMany()
.Map(m => m.MapKey("SupplierId"));
这当然会给老好人
在模型生成过程中检测到一个或多个验证错误:
SupplierId:名称:类型中的每个属性名称必须是唯一的。 属性名称“SupplierId”已定义。
我当然可以将 SupplierId 定义为与HasForeignKey 一起使用的属性,但随后我需要更改为.SuppliedId == (int)Suppliers.FedEx 等。这并不是真正的解决方案。
我还可以添加一个使用 SupplierId 属性作为支持字段的属性枚举,但这不适用于表达式,因为它需要使用真正的映射数据库属性
有什么想法吗?
【问题讨论】:
-
我们解决了问题?
-
不,到目前为止是丑陋的解决方法。很想得到这个排序
-
我也遇到过这个问题
-
如果您找到解决方案,请告诉我:D
-
好的,如果我能找到:)
标签: c# entity-framework entity-framework-6