Manchmal liefert das EF falsche Werte aus einer View, die sich auf dem SQL-Server befindet (eventuelle auch aus anderen DBs, keine Erfahrung).
Das Problem wird durch fehlende bzw. falsche Entitäts-Schlüssel verursacht. Wenn das EF keine PrimaryKeys erkennt - und manchmal erkennt es auch die vorhandenen Keys in einer View nicht - dann wird ein ComponentKey aus allen nicht nullable Properties gebildet. Und der ist sowohl inhaltlich beliebig falsch als das er auch zu falschen Daten führt.
Abhilfe schafft die manuelle Korrektur der Entitätschlüssel im EF-Diagramm.
Hier noch eine Möglichkeit, wenn die View eigentlich keinen Schlüssel bietet. Diese verwendet eine Zeilennummer als Key (isnull(ROW_NUMBER() OVER (ORDER BY xy),-1) as rId).
Isnull ist notwendig, da sonst die Zeilennummer manchmal nullable ist.
Das Verhalten kann komplett vermieden werden, wenn man eine Stored Procedure zwischenschaltet. Diese erlaubt auch das Sortieren der Daten.
9.20.2016
Sicherer Filename
VB:
Imports System.IO
Namespace Helper
Public Class FileNameHelper
Public Shared Function GetSafeFilename(filename As String) As String
Return String.Join("_", filename.Split(Path.GetInvalidFileNameChars()))
End Function
End Class
End NameSpace
Namespace Helper
Public Class FileNameHelper
Public Shared Function GetSafeFilename(filename As String) As String
Return String.Join("_", filename.Split(Path.GetInvalidFileNameChars()))
End Function
End Class
End NameSpace
c#
public string GetSafeFilename(string filename)
{
return string.Join("_", filename.Split(Path.GetInvalidFileNameChars()));
}
{
return string.Join("_", filename.Split(Path.GetInvalidFileNameChars()));
}
Kopierversionen:
Imports System.IO Namespace Helper Public Class FileNameHelper Public Shared Function GetSafeFilename(filename As String) As String Return String.Join("_", filename.Split(Path.GetInvalidFileNameChars())) End Function End Class End Namespacepublic string GetSafeFilename(string filename) { return string.Join("_", filename.Split(Path.GetInvalidFileNameChars())); }
8.18.2016
VS kopieren der Build-Ergebnisse in bestimmten Ordner
Relativ zur Solution:
Absolutes Ziel:
xcopy $(TargetDir)*.* $(SolutionDir)..\dlls\ /y
Absolutes Ziel:
xcopy $(TargetDir)*.* c:\dlls\ /y
8.10.2016
5.24.2016
VS2013 meldet "EditorPackage does not load correctly"
Unter
%LOCALAPPDATA%\Microsoft\VisualStudio\12.0
das Verzeichnis ComponentModelCache löschen.
%LOCALAPPDATA%\Microsoft\VisualStudio\12.0
das Verzeichnis ComponentModelCache löschen.
4.28.2016
WPF - Kultur in Bindings nutzen
Folgende Zeile muss in der App.cs im OnStartup ergänzt werden:
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
4.21.2016
IP-Adresse des Client in einem Web.API 2.x Controler ermitteln
Nach dem Einbinden von System.ServiceModel
funktioniert folgender Code:
private string GetClientIp(HttpRequestMessage request = null)
{
request = request ?? this.Request;
if (request.Properties.ContainsKey("MS_HttpContext"))
{
return ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;
}
else if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name))
{
RemoteEndpointMessageProperty prop = (RemoteEndpointMessageProperty)this.Request.Properties[RemoteEndpointMessageProperty.Name];
return prop.Address;
}
else if (HttpContext.Current != null)
{
return HttpContext.Current.Request.UserHostAddress;
}
else
{
return null;
}
}
{
request = request ?? this.Request;
if (request.Properties.ContainsKey("MS_HttpContext"))
{
return ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;
}
else if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name))
{
RemoteEndpointMessageProperty prop = (RemoteEndpointMessageProperty)this.Request.Properties[RemoteEndpointMessageProperty.Name];
return prop.Address;
}
else if (HttpContext.Current != null)
{
return HttpContext.Current.Request.UserHostAddress;
}
else
{
return null;
}
}
1.14.2016
WPF Listbox mit bleibender Markierung
Auch wenn ein anderes Element den Focus bekommt, bleibt der Eintrag "aktiv" markiert.
Events als Behaviors / Events in MVVM
Für WPF:
Verweis auf Microsoft.XAML.Interactions notwendig
...
xmlns:i=http://schemas.microsoft.com/expression/2010/interactivity
...
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding LoadedCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
Für WinPhone 8.1:
Verweis auf Behaviors SDK (XAML)
...
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
...
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Tapped">
<core:InvokeCommandAction Command="{Binding RufeNummerAnCommand, Mode=OneWay}"/>
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
Verweis auf Microsoft.XAML.Interactions notwendig
...
xmlns:i=http://schemas.microsoft.com/expression/2010/interactivity
...
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding LoadedCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
Für WinPhone 8.1:
Verweis auf Behaviors SDK (XAML)
...
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
...
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Tapped">
<core:InvokeCommandAction Command="{Binding RufeNummerAnCommand, Mode=OneWay}"/>
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
1.13.2016
Veröffentlichen von ASP.NET Web-API RESTService per FileCopy
Vorbereitung des Codes
- Im Projektmappenexplorer von VisualStudio das Webserver-Projekt rechtsklicken
- Neues "Custom"-Profil anlegen
- Publis method:"File System" wählen und Pfad angeben
- Assistent bis zu Ende benutzen
- Inhalt des Zielverzeichnisses auf den Server kopieren, auf dem der IIS läuft
Vorbereitung des IIS
Neue Website einrichten deren physikalischer Pfad auf das Verzeichnis verweist, in dem der Code auf dem Server liegt.
Abonnieren
Posts (Atom)