Fluorine TransientAttribute и Linq-to-SQL - PullRequest
3 голосов
/ 09 июля 2010

Я нашел обходной путь, но в начале этой недели у меня возникли проблемы при работе с 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, но имеет псевдоним для внешнего класса.

Теперь мне не нужно было отправлять свойство по проводам, поэтому я попробовал шаги, которые Марк Гравелл предложил в выпуск 456624 , сначала добавив к нему атрибуты, используя MetadataTypeAttribute в System.ComponentModel.DataAnnotations (найдено из комментария JasonW к выпуск 393687 :

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

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

К сожалению, похоже, что FluorineFx пока не поддерживает атрибуты метаданных (что неудивительно, они довольно новые).

В итоге мне пришлось создать отдельное DTO со всеми свойствами, о которых заботился Flash, и ни с одним из свойств, которых он не имел. Не самое элегантное из решений.

Итак, другие люди сталкивались с этой проблемой, и вы нашли более изящные способы ее решения?

1 Ответ

1 голос
/ 07 июня 2011

Я использую атрибут Transient, и он работает нормально. Я работаю с последней версией FluorineFx из SVN.

...