Fluorine TransientAttribute和Linq-to-SQL

时间:2010-07-09 14:59:41

标签: asp.net flash serialization transient fluorinefx

我找到了一个解决方法,但是本周早些时候我在使用FluorineFx时遇到了麻烦,在那里我有一个Linq-to-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,但是可别化为可外部化的类。

现在我不需要通过网络发送该属性,因此我尝试了Marc Gravellissue 456624建议的步骤,首先使用系统中的MetadataTypeAttribute向其中添加属性.ComponentModel.DataAnnotations(来自JasonWissue 393687的评论:

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

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

不幸的是,似乎FluorineFx还不支持元数据属性(这不是很令人惊讶,tbh,它们很新)。

我最终要做的是创建一个专用的DTO,其中包含Flash所关注的所有属性,而不是它没有的所有属性。不是最优雅的解决方案。

那么,让其他人遇到这个问题并让你找到更优雅的解决方法吗?

1 个答案:

答案 0 :(得分:1)

我使用Transient属性,它工作正常。我使用SVN最新发布的FluorineFx。