2010-07-09 110 views
3

我找到了一種解決方法,但本週早些時候在使用FluorineFx時遇到了麻煩,在那裏我有一個Linq-to-SQL生成的對象,我想通過電線將它發送到Flash 。這個對象包含在閃存並不需要一個屬性:氟TransientAttribute和Linq-to-SQL

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

但Flex的玩不轉reinflating這種類型,投擲:

ArgumentError: Error #2173: Unable to read object in stream. The class flex.messaging.io.ArrayCollection does not implement flash.utils.IExternalizable but is aliased to an externalizable class.

現在我並不需要該資源在發線,所以我嘗試的步驟是在Marc Gravell建議issue 456624,首先添加使用System.ComponentModel.DataAnnotations的MetadataTypeAttribute屬性它(從JasonW的評論發現issue 393687

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

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

不幸的是,FluorineFx似乎還不支持元數據屬性(這並不令人驚訝,但它們是相當新的)。

我最終不得不做的是創建一個專用的DTO,它具有Flash關心的所有屬性以及它沒有的所有屬性。不是最優雅的解決方案。

那麼,有其他人遇到這個問題,你找到更多優雅的解決方法嗎?

回答

1

我使用瞬態屬性,它工作正常。我確實使用SVN發佈的最新FluorineFx版本。