Windows Forms
Wer sich sich die beiden Frameworks genauer anschaut stellt sich recht schnell die Frage, wieso braucht man beides...
Auf der Technical Summit in Berlin mit einem gleichnamigen Vortrag bekam ich die Antwort dazu:
Die beiden Entwicklerteams haben nichts von einander gewußt und es wurde doppelt entwickelt. (siehe auch)
Im Detail wurden zwar auch die Vor- und Nachteile der einzelnen Umsetzungen im Detail erklärt, um abschließend kund zu tun, dass Linq-To-Sql zwar weiter "weiter unterstützt" wird, aber das Team bereits nicht mehr existiert.
Eine weitere Entwicklung findet sozusagen nicht mehr statt.
Das Entity Framework dagegen hat zwar im Moment noch nicht ganz so viele Features, was sich allerdings...
Mit Hilfe von System Reflection kann man Enumwerte auslesen und entsprechend weiter verarbeiten.
using System.Reflection;
private enum Fruits
{
Orange = 1,
Apple = 2,
Pear=3
}
static void Main()
{
Type dataType = Enum.GetUnderlyingType(typeof(Fruits));
foreach (FieldInfo field in typeof(Fruits).GetFields(
BindingFlags.Static | BindingFlags.GetField | BindingFlags.Public))
{
object value = field.GetValue(null);
Console.WriteLine("{0}={1}", field.Name, Convert.ChangeType(value, dataType));
} Console.ReadLine();
}
EDIT:
Oder eben einfach mit
Enum.GetValues(Fruits);
Enum.GetNames(Fruits);
(Danke Dani für den Kommentar!)
Wenn man im DataGridViev in Windows Forms einen Datensatz mit den durch den Designer erstellten Einstellungen erstellt und automatisch aktualisiert, bekommt man in der Datenbank per default NULL-Values.
Um das zu verhindern, füge ich in Form_Load einen Event für TableNewRow hinzu, in dem ich wiederum die Defaultvalues setzen kan:
Private Sub Form_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Me.myDataSetTableAdapter.Fill(Me.myDataSet.myTablename) AddHandler myDataSet.Tables(0).TableNewRow, AddressOf newRowHandlerEnd SubSub newRowHandler(ByVal sender As Object, ByVal...
Mit folgendem Code kann man den in den Appsettings eingetragenen ConnectionString zur Laufzeit zu ändern:
My.MySettings.Default.Item (connectionName) = connectionString
Wenn der Connectionstring in der App.config gespeichert werden soll, hilft folgende Funktion:
Sub saveConnectionString(ByVal connectionName As String, _
ByVal connectionString As String)
Dim Config As Configuration
Dim Section As ConnectionStringsSection
Dim Setting As ConnectionStringSettings
Dim ConnectionFullName As String
ConnectionFullName = String.Format("{0}.My.MySettings.{1}", _
System.Reflection.Assembly.GetExecutingAssembly.GetName.Name, _
connectionName)
Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
Section = CType(Config.GetSection("connectionStrings"), ConnectionStringsSection)
Setting = Section.ConnectionStrings(ConnectionFullName)
If IsNothing(Setting) Then Throw New Exception("Connection mit dem Namen " & _
connectionName & " nicht gefunden.")
Setting.ConnectionString = connectionString
Config.Save(ConfigurationSaveMode.Full)
'Hier wird der Connectionstring für die aktuelle Laufzeit geändert
My.MySettings.Default.Item(connectionName) = connectionString
End Sub