EF Exception - InvalidOperationException:'y'上的'x'属性无法设置为'String'值

时间:2014-02-11 01:25:17

标签: c# entity-framework

另一位开发人员在我们的EF模型实体(OrderItem)中添加了一个新的非null int属性(OrderItemSource)。

我们的应用程序在尝试从DB加载OrderItem时抛出异常。

  

[InvalidOperationException:'OrderItem'上的'OrderItemSource'属性无法设置为'String'值。您必须将此属性设置为“Int32”类型的非null值。 ]

     

System.Data.Common.Internal.Materialization.ErrorHandlingValueReader`1.GetValue(DbDataReader reader,Int32 ordinal)+218 ....

  • 该属性是数据库中的int非null类型,可直接在表中访问。
  • 在应用程序端,OrderItemSource表示为枚举值,并通过以下属性用部分类抽象

    public CartItem.SourceType Source
    {
        get { return (CartItem.SourceType)OrderItemSource; }
        set { OrderItemSource = (int)value; }
    }
    
  • EF生成的代码看起来没问题,因为它创建了一个类型为Int32的属性。

模型看起来像这样:

<Property Name="OrderItemSource" Type="int" Nullable="false" />

<Property Type="Int32" Name="OrderItemSource" Nullable="false" />

<ScalarProperty Name="OrderItemSource"  ColumnName="OrderItemSource" />

任何人都可以看到为什么这可能会抛出异常?这些类型从DB到EF和我的部分看起来都不错。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

Noob时刻 - 如果我检查了正确的数据库会很好。 数据库上的类型实际上是一个varchar,它与DB项目不同步。