2012-04-07 7 views
3

Googleを検索して、自分のWCFとクライアントのWindowsフォームアプリケーションで何が起こっているのか把握しようとしています。WCF EFを保存する4.1アイテムが例外をスローするアイテムを固定サイズに追加できない

私は継続的にどの参照

"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プロジェクトが含まれています。

私のテストアプリケーションでDataLayerを参照していない場合、この問題は発生しませんが、ICollection<Ingredient>は単純なIngredient[]配列になります。これが分かるように、これは毎回配列を初期化するコード化の痛みになります。

前もって感謝します。

答えて

2

「Add Service Reference」を使用してテストでWCFサービスへの参照を追加する場合、クライアントでGenerateプロキシのデフォルトのコレクションタイプを設定するオプションがあります。私が思うデフォルトは配列です、あなたはジェネリックリストに変更することができます。

svcutilを使用している場合は、同じことが可能です。

8

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

問題のプロパティをICollection<Order>からHashSet<Order>に変更するだけでした。詳細は、Stop WCF Deserializing Empty ICollection into Zero Capacity Arrayを参照してください。

0

奇妙です。私はこの同じエラーがあって、正しいことをして、 "ToArray()"と呼んでいました。 "ToList()"に変更し、正常に動作するようになりました。

+0

Pfffff ....私はこのエラーでグーグルでここにたどり着いた。この回答が見つかりました。正しい答えとしてそれを投票して、それが2年前に私によって投稿されたことを実感するだけでした!私はここで同じプロジェクトで同じエラーを見つけたと思う。 – Maxcelcat

関連する問題