Сошлитесь на Систему. Сеть dll в Вашей модели и Системе использования. Сеть. Кэширование. Кэш
public string[] GetNames()
{
string[] names = Cache["names"] as string[];
if(names == null) //not in cache
{
names = DB.GetNames();
Cache["names"] = names;
}
return names;
}
Немного упрощенный, но я предполагаю, что это работало бы. Это не MVC конкретный, и я всегда использовал этот метод для кэширования данных.
Спасибо, Эд, но я нашел более простую версию:
SELECT T.C.value('.', 'varchar(100)') as activity
FROM @myDoc.nodes('(/Root/Activities/Activity)') as T(C)
Хотя из вашего "излишне сложного" примера это кажется пугающе простым ..
Это работает, но кажется излишне сложным. Может быть более простой способ.
DECLARE @myDoc xml
SET @myDoc =
'<Root>
<Activities>
<Activity>This is activity one</Activity>
<Activity>This is activity two</Activity>
<Activity>This is activity three</Activity>
</Activities>
</Root>'
SELECT activity.VALUE('(//Activity)[1]','varchar(100)') AS activity
FROM (
SELECT NewTable.activity.query('.') AS activity
FROM (SELECT 1 AS col1) AS t
CROSS APPLY @myDoc.nodes('(/Root/Activities/Activity)') AS NewTable(activity)
) AS x