SharePoint: návod jak zjistit ve které knihovně je nejvíce položek/dokumentů

Stačí nad obsahovou databází SharePointu vykonat dotaz:

select webs.Title,webs.FullUrl, tp_Title,tp_ServerTemplate,UserDataCount,DocsCount
from AllLists left outer join
(select tp_ListId, COUNT(*) as UserDataCount from AllUserData
group by tp_ListId ) E On E.tp_ListId = AllLists.tp_ID
left outer join
(select ListId, COUNT(*) as DocsCount from dbo.Docs
group by ListId ) P ON AllLists.tp_ID = P.ListId
left outer join Webs ON AllLists.tp_WebId = Webs.id
order by DocsCount desc

výsledek:

image

Upgrade projektu SharePoint 2010 na 2013

Ve Visual Studiu asi zatím není žádná možnost jak převést existující projekt pro SharePoint 2010 na 2013, řešení je však jednoduché, vyžaduje však trošku práce v poznámkovém bloku.

[more]

  • otevřete soubor projektu csproj v poznámkovém bloku
  • změňte verzi .NET Frameworku na <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    image
  • změňte element pro určení cílové verze SP na <TargetOfficeVersion>15.0</TargetOfficeVersion>
    image
  • přepište všechny reference na assembly SharePointu z verze 14.0.0.0 na 15.0.0.0
  • následně je nutné projít celý projekt, všechny ASCX a ASPX soubory a přepsat všechny výskyty 14.0.0.0 na 15.0.0.0 a to samé pro CONTROLTEMPLATES, kde je potřeba provést změnu z ~/_controltemplates/.. na ~/_controltemplates/15/
  • otevřete soubor Package\Template.xml a přidejte atribut SharePointProductVersion=“15.0″:
    image
  • otevřete Package\Package.package a přidejte atribut sharePointProductVersion=“15.0″
    image

SQL LINQ vs. Guid.Empty

Nikdy jsem na to zatím nenarazil, nebo si toho minimálně nevšimnul, ale v LINQ dotazu platí následující:

Guid.Empty != new Guid("00000000-0000-0000-0000-000000000000")

konkrétní příklad:

var a = query.Where(row => row.InvoiceId == Guid.Empty);

var b = query.Where(row => row.InvoiceId == new Guid("00000000-0000-0000-0000-000000000000"));

logicky bych čekal, že výsledek bude identický, tedy a i b budou obsahovat kolekci identických objektů, ale výsledek je ten, že a obsahuje prázdnou kolekci, b obsahuje všechny záznamy kde je InvoiceId rovno Guid.Empty, což je sice to samé, LINQ to ale zjevně interpretuje jinak a první příklad je tedy nefunkční, respektive nevrací očekáváné výsledky.

Na otázku PROČ jsem nenašel žádnou smysluplnou odpověď. BUG?