3

私はGoogleを検索し、WCFとクライアントのWindowsフォームアプリで何が起こっているのかを理解しようとしてかなりの時間を費やしました.

次のエラーが継続的に発生します

"Unable to set field/property Ingredients on entity type Datalayer.UnitOfMeasure. See InnerException for details."
...
inner exception is 
"An item cannot be added to a fixed size Array of type 'Datalayer.Ingredient[]'."


Stack Trace - 
    at System.Data.Objects.Internal.PocoPropertyAccessorStrategy.<AddToCollection>b__0[T](Object collectionArg, Object item)
       at System.Data.Objects.Internal.PocoPropertyAccessorStrategy.CollectionAdd(RelatedEnd relatedEnd, Object value)

ソリューションを構成した方法で、DataLayer クラス ライブラリを参照する WCF Web サービスがあり、WCF サービスと DataLayer プロジェクトを参照する Windows アプリ (テスト アプリ) があります。

テスト アプリで DataLayer を参照しない場合、この問題は発生しませんが、ICollection<Ingredient>単純なIngredient[]配列が失われます。ご覧のとおり、これは毎回配列を初期化するためのコーディングの苦痛になります。

誰かアイデアはありますか?前もって感謝します。

4

3 に答える 3

8

私はこの正確なエラーに遭遇していましたが、受け入れられた答えは私が必要とした解決策ではありませんでした。List<Order>クライアントが私のWCFサービスにアップを送信していたことがわかりましたが、Customer.Ordersプロパティがとして定義されていたICollection<Order>ため、WCFデシリアライザーデシリアライザーは、Order型の配列、つまり、である最も単純な形式でデシリアライザーを逆シリアル化しましたOrder[]

私が思いついた唯一の解決策は、POCOオブジェクトの問題のプロパティをからに変更することでしICollection<Order>HashSet<Order>。詳細については、「空のICollectionをゼロ容量アレイにデシリアライズするWCFの停止」を参照してください。

于 2012-06-01T08:39:54.210 に答える
2

「サービス参照の追加」を使用してテストで WCF サービスへの参照を追加する場合、クライアントで生成プロキシの既定のコレクション タイプを構成するオプションがあります。デフォルトは配列だと思いますが、一般的なリストに変更できます。

svcutil を使用している場合、それも同じことができます。

于 2012-04-07T15:47:36.463 に答える
0

変。これと同じエラーがあり、「ToArray()」を呼び出して正しいことをしていました。「ToList()」に変更すると、正常に動作するようになりました。

于 2014-06-16T02:35:00.027 に答える