Как я сериализировал бы LINQ-SQL ленивый список

Если вы установите кратность вашего атрибута на [1], он станет не обнуляемым.

- someAttribute : int [1]

И так как 1 является кратностью по умолчанию для атрибутов, вы также можете оставить кратность неопределенной.

- someAttribute : int

Чтобы разрешить для нуля, вы должны явно установить нижнюю границу равной 0

- someAttribute : int [0..1]

См. Спецификация UML 2.5 глава 9.5.4 (Property.Notation)

- это диапазон кратности свойства. Если этот термин опущен, он подразумевает кратность 1 (ровно один). (См. MultiplicityElement - подпункт 7.5.)

blockquote>

6
задан Fionnuala 19 November 2008 в 18:19
поделиться

3 ответа

При помещении его в распределенный кэш, необходимо будет избежать LazyList в целом. Можно затем назвать.ToList () вокруг целого оператора LINQ как в:

(from x select new MemberBlogs).ToList()

Это должно затем быть реализуемым, потому что это вынуждает запросы быть оцененными.

6
ответ дан 9 December 2019 в 22:41
поделиться

Если Вы кэшируете его, почему Вы используете ленивый список? Не используйте ленивый список, используйте кэширование, и проблема уходит.

2
ответ дан 9 December 2019 в 22:41
поделиться

Я просто предполагаю, но я сказал бы, что проблема состоит в том, что это сериализирует запрос вместо результатов; я не знаю то, на что похожа реализация LazyList, но можно, вероятно, добавить метод OnSerializing, который на самом деле выполняет запрос до сериализации его; Что-то как:

[OnSerializing]
private void ExecuteLinqQuery(StreamingContext context)
{
    if (!SomethingThatIndicatesThisLinqQueryHasNotBeenExecuted)
        LinqVariable.ToList()
}

Таким образом, Вы добираетесь для хранения Ленивой Загрузки (для чего-либо, что не входит кэш), но затем также, если это действительно поразит кэш, то это будет выполнять запрос linq и кэшировать результаты.

3
ответ дан 9 December 2019 в 22:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: