3

回避策を見つけましたが、今週初めにFluorineFxでの作業に問題がありました。そこでは、LinqからSQLに生成されたオブジェクトをFlashにネットワーク経由で送信したいと考えていました。このオブジェクトには、Flashが必要としないプロパティが含まれていました。

[Association(Name="User_UserEntry", Storage="_UserEntries",
             ThisKey="UserID", OtherKey="UserID")]
public EntitySet<UserEntry> UserEntries { ... }

しかし、Flexはこのタイプの再膨張を処理できず、次のようにスローします。

ArgumentError:エラー#2173:ストリーム内のオブジェクトを読み取ることができません。クラスflex.messaging.io.ArrayCollectionはflash.utils.IExternalizableを実装していませんが、externalizableクラスにエイリアスされています。

これで、プロパティをネットワーク経由で送信する必要がなくなったため、Marc Gravellが問題456624で提案した手順を試しました。まず、System.ComponentModel.DataAnnotationsのMetadataTypeAttributeを使用して属性を追加しました(問題に関するJasonWのコメントから見つかりました)。 393687

[MetadataType(typeof(UserMetadata)]
public partial class User { }

internal class UserMetadata
{
    [FluorineFx.Transient]
    public EntitySet<UserEntry> UserEntries { get; set; }
}

残念ながら、FluorineFxはまだメタデータ属性をサポートしていないようです(これはそれほど驚くことではありませんが、まったく新しいものです)。

私がやらなければならなかったのは、Flashが気にかけているすべてのプロパティと、そうでないプロパティを備えた専用のDTOを作成することでした。最もエレガントなソリューションではありません。

それで、他の人がこの問題に遭遇し、それを解決するためのよりエレガントな方法を見つけましたか?

4

1 に答える 1

1

Transient 属性を使用していますが、正常に動作します。私は SVN の最新の FluorineFx リリースを使用しています。

于 2011-06-07T17:55:06.720 に答える