Archiv für den Monat November 2012

MSSQL letztes Änderungsdatum für eine Tabelle ermitteln


Wenn man Daten aus einer Datenbank in seiner Anwendung nicht immer wieder neu abrufen möchte und diese z.B. in statischen Listen vorhält, will man von Zeit zu Zeit doch ermitteln ob es sich bei den vorgehaltenen Daten noch um die aktuellen Daten handelt. Da es hier sehr Aufwendig sein kann jeden einzelnen Datensatz zu überprüfen, wäre es von Vorteil wenn man erst herausbekommen würde, wann die letzte Datensatzänderung in dieser Tabelle stattgefunden hat. Dann kann man dieses Datum mit dem Datum vergleichen, als man die Datensätze das erste/letzte mal abgerufen hat.

Dafür kann das Folgende SQL Schnipsel verwendet werden:

SELECT TOP 1 last_user_update FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'DBName') AND OBJECT_ID=OBJECT_ID('TabellenName')
Order By last_user_update ASC

Hier wird als Einzelner Wert die Letzte Datensatzänderung in der Übergebenen Datenbank und Tabelle zurück gegeben.

ACHTUNG: Man muss aufpassen, das hier auch “Null” bzw. kein Wert zurückkommen kann, wenn der DB Server z.B. neu gestartet wurde, da es sich nur um Temporäre Tabellen handelt, die Ihre Daten nicht dauerhaft im Dateisystem ablegen und sich der Wert erst wieder ändert wenn ein Datensatz geändert wurde.

Quelle:

http://blog.sqlauthority.com/2009/05/09/sql-server-find-last-date-time-updated-for-any-table/

Advertisements

Verschachtelte “Masterpages” (RenderSection) in MVC


Es ist sehr einfach in MVC Verschachteltete (nested) “Masterpages” zu erstellen, in MVC handelt es sich hier aber eher um verschachtelte RenderSections die dafür genutzt werden.

Als erstes haben wir da unsere RenderSection in der “_Layout.cshtml” Datei auf diese greift jeder View zurück solange im jeweiligen View keine andere “Masterlayout” Seite angegeben wurde.

In meinem folgenden Beispiel, habe ich eine Untergeordnete Masterpage im “Home” View angelegt “_HomeLayoutMaster.cshtml”. Diese Untergeordnete Masterpage hat selbst die “_Layout.cshtml” als Grundlage und wird in dieser Datei eingebettet.

image

Inhalt der “_Layout.cshtml”

In dieser RenderBody Funktion wird unsere “_HomeLayoutMaster.cshtml” gerendert, wenn Auf Views zugegriffen wird die auf die “_HomeLayoutMaster.cshtml” Datei als Master verweisen.

</pre>
<header>
<div class="content-wrapper">
<div class="float-right">
<ul id="menu">
	<li>@Html.ActionLink("Startseite", "Index", "Home")</li>
	<li>@Html.ActionLink("About", "About", "Home")</li>
	<li>@Html.ActionLink("Kontakt", "Contact", "Home")</li>
</ul>
</div>
</div>
</header>
<div id="body"><section class="content-wrapper main-content clear-fix">@RenderBody()</section></div>
<pre>    

Inhalt der “_HomeLayoutMaster.cshtml”

Unsere “HomeLayoutMaster.cshtml” Datei greift als Master auf unsere “_Layout.cshtml” Datei zurück und alle Dateien die auf unsere “HomeLayoutMaster.cshtml” Datei zurückgreifen, werden hier in der RenderBody Methode gerendert.

@{
    ViewBag.Title = "_HomeLayoutMaster";
    //In der Untergeordneten Masterpage, auf die Mainmasterpage "verweisen"
    Layout = "~/Views/Shared/_Layout.cshtml";
}</pre>
<h2>Untergeordnete Masterpage zur Mainmasterpage</h2>
<pre>
Hier könnte z.B. ein weiteres Menü für den Home Controller stehen.</pre>
<div>@* Hier wird der Content für unsere Untegeordnete Masterpage gerendert. *@ @RenderBody()</div>
<pre>

Inhalt der “About.cshtml”

Die “About.cshtml” Datei wird ganz normal per Action und Controller aufgerufen, hier wird nur als Layoutmaster unsere “_HomeLayoutMaster.cshtml” Datei angegeben und damit wird diese Datei in der RenderBody Methode unserer “_HomeLayaoutMaster.cshtml” Datei gerendert.

@{
    ViewBag.Title = "Info";
    //Wenn die About Seite in unseren untergeordneten Masterpage gerendert werden soll
    //unter Renderbody, dann muss hier als Layout die passende Untergeordnete Masterpage angegeben werden.
    Layout = "~/Views/Home/_HomeLayoutMaster.cshtml";
}</pre>
<h1>Inhalt unserer About Seite</h1>
<pre>

Inhalt der “Index.cshtml”

Diese Datei greift auf die Standard “_Layout.cshtml” Datei zurück und hier wird einfach keine alternative Layout Datei angegeben.

@{
    ViewBag.Title = "Homepage";
    //Da kein Layout angegeben, wird diese Seite direkt unter unserer Standatd Masterseite gerendert
    //der _Layout.cshtml
}

Inhalt der Indexseite

Das Projekt steht auch wie immer unter Codeplex zur Verfügung und kann dort heruntergeladen werden unter:

https://squadwuschel.codeplex.com/

Dann unter “Source Code” –> “Browse” –> “Testprojekte” –> “MvcNestedMasterPages”