Если вы установите кратность вашего атрибута на [1]
, он станет не обнуляемым.
- someAttribute : int [1]
И так как 1 является кратностью по умолчанию для атрибутов, вы также можете оставить кратность неопределенной.
- someAttribute : int
Чтобы разрешить для нуля, вы должны явно установить нижнюю границу равной 0
- someAttribute : int [0..1]
См. Спецификация UML 2.5 глава 9.5.4 (Property.Notation)
blockquote>
- это диапазон кратности свойства. Если этот термин опущен, он подразумевает кратность 1 (ровно один). (См. MultiplicityElement - подпункт 7.5.)
При помещении его в распределенный кэш, необходимо будет избежать LazyList в целом. Можно затем назвать.ToList () вокруг целого оператора LINQ как в:
(from x select new MemberBlogs).ToList()
Это должно затем быть реализуемым, потому что это вынуждает запросы быть оцененными.
Если Вы кэшируете его, почему Вы используете ленивый список? Не используйте ленивый список, используйте кэширование, и проблема уходит.
Я просто предполагаю, но я сказал бы, что проблема состоит в том, что это сериализирует запрос вместо результатов; я не знаю то, на что похожа реализация LazyList, но можно, вероятно, добавить метод OnSerializing, который на самом деле выполняет запрос до сериализации его; Что-то как:
[OnSerializing]
private void ExecuteLinqQuery(StreamingContext context)
{
if (!SomethingThatIndicatesThisLinqQueryHasNotBeenExecuted)
LinqVariable.ToList()
}
Таким образом, Вы добираетесь для хранения Ленивой Загрузки (для чего-либо, что не входит кэш), но затем также, если это действительно поразит кэш, то это будет выполнять запрос linq и кэшировать результаты.