Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von WarLorD_XaN
Thema: Wie können ohne "SELECT *" die Properties eines Objekts initialisiert sein?
Am im Forum: Datentechnologien

Ok ich denke ich verstehe.

Das mit den Commands sieht auch ganz interessant aus, damit muss ich mich mal näher beschäftigen.
Hast du da vielleicht noch weiterführende Lektüre bei der Hand?


Danke nochmal für deine ausführlichen Erklärungen

Thema: Wie können ohne "SELECT *" die Properties eines Objekts initialisiert sein?
Am im Forum: Datentechnologien

Wow!

Danke Abt, für diese tolle Einführung in das Thema Projections!

Das ist ja eine super Sache, ich wünschte ich hätte mal wieder etwas mehr Zeit mich um mein privates EF Core Projekt zu kümmern.

Nur damit ich das auch richtig verstanden habe:

Ich mache mir also für die verschiedensten Anwendungsfälle (Logik oder UI) einfach meine Projections und das dafür notwendige Profile. Und in der Logik bzw. UI verweise ich dann nur noch auf die Projections. In der UI habe ich dann eventuell noch eine Art ViewModel darum.

Könnte man sagen eine Entity wäre ein Objekt auf Datenbank Ebene und eine Projection wäre dann ein Business Object?

Edit:
Wie wäre das dann wenn ich Daten verändern möchte?
Projections oder auch die KeylessEntity werden ja nicht getrackt.
Wobei ich ja bei Änderungen sowieso im Zweifelsfall mehrer Queries machen muss.

Thema: Wie können ohne "SELECT *" die Properties eines Objekts initialisiert sein?
Am im Forum: Datentechnologien

@FZelle
Ok, das klingt für mich nachvollziehbar.

@Abt
Keyless Entity Types kannte ich noch gar nicht, danke für den Hinweis. Damit kann ich in meinem privaten Projekt wo ich EF Core verwende sicher einige Query-Konstrukte optimieren.


Vielleicht noch zum Hintergrund:
Wir haben in der Firma eine Art "ORM" Framework im Einsatz, das aktuell so konfiguriert ist, dass man die Spalten die man haben möchte immer explizit angeben muss. Die Objekte auf die das gemappt wird sind jedoch immer die selben, egal ob ich eine oder alle Spalten einer Tabelle haben will.
Da es in diesem Framework keine Zentrale Stelle gibt wo Daten aus der DB geladen werden, sondern das quer über die komplette Anwendung verstreut ist, bedeutet das einen riesigen Wartungsaufwand.

Daher disktutieren wir aktuell ob wir das Framework nicht umkonfigurieren sodass immer alle Spalten geladen werden.
Darum habe ich hier diesen Thread eröffnet, da ich mir unsicher war ob das generell eine schlechte Idee ist.
Unser "ORM" arbeitet so dass die Spalten im resultierenden SQL explizit angegeben werden. Also denke ich sollten wir das einfach mal testen wie hier die Performance aussieht.

Thema: Wie können ohne "SELECT *" die Properties eines Objekts initialisiert sein?
Am im Forum: Datentechnologien

Ah ich denke ich verstehe.

Wenn ich explizit "alle" Spalten abrufe dann ist das besser als * weil ich (bzw. der ORM) die Kontrolle habe was abgefragt wird.

Der ORM könnte ja nicht von allen Spalten wissen.

Die SELECT * Problematik ist also nicht die dass alle Spalten einer Tabelle abgefragt werden, sondern wo die Kontrolle liegt welche Spalten abgefagt werden.

Könnte man das so stehen lassen?

Thema: Wie können ohne "SELECT *" die Properties eines Objekts initialisiert sein?
Am im Forum: Datentechnologien

Hallo zusammen,

vor ein paar Monaten gab es in einem Thread hier im Forum die Empfehlung dass "SELECT * " eine schlechte Idee ist:

Es wurde dort auch auf StackOverflow verwiesen warum genau das eine schlechte Idee ist.

Ich verstehe soweit die auf StackOverflow genannten Gründe und finde sie klingen auch nachvollziehbar.

Was ich nicht verstehe, ist jedoch wie das zusammen mit einem Object-Relational-Mapping (ORM) Framework verträgt.
Angenommen ich habe eine Klasse die mir eine Tabelle abbildet.
Wenn jetzt beim SELECT aus der Datenbank nicht alle Spalten abgefragt werden, dann ist ja auch mein Objekt nur zum Teil mit den Daten initialisiert.

Woher soll das ORM Framework wissen welche Spalten es abfragen soll?
Dann müsste ja die Logik, welche mit den Datenobjekten arbeitet (oder mit Objekten die daraus aufgebaut sind) der Datenschicht mitteilen welche Spalten sie benötigt.
Da kann ich mir das ORM Framework ja komplett sparen.


Habe ich da etwas falsch verstanden?
Oder ist das ein Problem, dass ich je nach Tabelle anders lösen muss.


Schöne Grüße,
Xan

verwendetes Datenbanksystem: SQL Server

Thema: Rahmen bei FormBorderStyle = none
Am im Forum: GUI: Windows-Forms

Hallo,

soweit ich mich erinnern kann musst du bei FormBorderStyle=None solche Dinge selbst Zeichnen.

Siehe hier

Thema: Wie bei Crystal Reports Standardwerte /-größen einstellen oder zurücksetzen?
Am im Forum: Rund um die Programmierung

Reference ist die Dokumentation der API.

Die Developer Guide kenne ich nicht, aber sieht so aus als ob das eine Schritt für Schritt Anleitung ist wie man mit der API arbeitet.

Thema: Wie bei Crystal Reports Standardwerte /-größen einstellen oder zurücksetzen?
Am im Forum: Rund um die Programmierung

Hallo ChrisProg,

es gibt auch in der .NET Version eine API:
SAP Crystal Reports, Developer Version for Microsoft Visual Studio

sg
edit: Findet man unter "Related Content" auf der von dir verlinkten Wiki-Seite

Thema: .exe startet nicht auf zweitem Rechner (nur nach einmaliger VS installation)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Nachtrag: Hier gibts auch aktuelle VMs vom Microsoft:
https://developer.microsoft.com/en-us/windows/downloads/virtual-machines

Thema: Wie kann ich die Id bei einem Entity Framework Entity auf NULL setzen?
Am im Forum: Datentechnologien

Hallo schorge,

in deinem Codebeispiel liegt das Problem daran, dass du nach dem Erzeugen mit new der Referenz jedoch "this.actualMember" zuweist. Somit fügst du jedes mal das gleiche Objekt hinzu.
Die EF Runtime erkennt das und speichert dann nur eines.

Wenn ich dich recht verstehe möchtest du Kopien von Objekten hinzufügen.
Das Kopieren (clonen) musst du selbst implementieren.


class Member
{
    Member Clone()
    {
        return new Member
        {
            a = this.a,
            b = this.b,
            c = this.c
            //  ID hier nicht setzen
        };
    }
}

foreach(var newMember in members)
{
    var member = this.actualMember.Clone();
    member.name = "change values";
    //set null not allowed for unique id long
    //member.id = null;

    db.MemberActivations.Add(member);
}

Thema: .exe startet nicht auf zweitem Rechner (nur nach einmaliger VS installation)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat
So eine VM mit Windows ist doch schnell aufgesetzt?

Die gibt es sogar fertig direkt bei Microsoft:
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Thema: Razor Pages - BindProperty mit gleichem Namen auf PartialViews haben nach Post die gleichen Werte
Am im Forum: Web-Technologien

Hallo

ich hänge gerade an einem Problem wo ich nicht weiß wie ich das lösen soll.

Verwendete Technologie: ASP .NET Core 2.2 Razor Pages

Ich habe eine Page. Auf dieser Page ist ein form. Im form gibt es 2 partial views, welche inputs enthalten.
Beide partial views haben je ein anderes Property des PageModel als Model, sind jedoch vom selben Datentyp.

Wird die Page angezeigt passt noch alles.
Im OnPost haben jedoch beide Properties des Page Models die selben Werte.

Wie löse ich das am besten?
Ich habe ja ein partial view weil ich keinen Code duplizieren will.

Zur besseren Veranschaulichung hier noch etwas Code:
Das PageModel:


public class Ship
{
    public string Name { get; set; }
    public string Crew { get; set; }
}

public class IndexModel : PageModel
{
    [BindProperty]
    public Ship FirstShip { get; set; }
    [BindProperty]
    public Ship SecondShip { get; set; }

    public void OnGet()
    {
        FirstShip = new Ship
        {
            Name = "USS Enterprise",
            Crew = "200-500"
        };
        SecondShip = new Ship
        {
            Name = "USS Voyager",
            Crew = "150"
        };
    }
    public void OnPost()
    {
        //  FirstShip und SecondShip have the same values
    }
}

Die Page:
@page
@model IndexModel

<form method="post">
    <partial name="/Pages/_ShipEdit.cshtml" model="Model.FirstShip" />
    <partial name="/Pages/_ShipEdit.cshtml" model="Model.SecondShip" />
    <input type="submit" value="save" />
</form>


Das partial view "_ShipEdit.cshtml"

@model Ship

<div>
    <label asp-for="Name"></label>
    <input asp-for="Name" />
</div>
<div class="form-group">
    <label asp-for="Crew"></label>
    <input asp-for="Crew" />
</div>


Vielen Dank für eure Hilfe,
sg xan

Thema: Im SQLite automatisch Spalten erstellen lassen
Am im Forum: Datentechnologien

Zitat von Stefan.Haegele
Mit 26.000 Einträgen langweilt sich der SQL Server

Es geht hier zwar um SQLite, aber auch die SQLite Engine kommt problemlos mit 26.000 Zeilen klar.

Im Gegensatz dazu könnte es bei sehr vielen Spalten schon eher mal zu Problemen kommen.

Außerdem:
Zitat von Donald Knuth
Premature Optimization Is the Root of All Evil

Thema: [erledigt] Verweise zu NuGet Paketen passen nicht
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

Pfadangaben von Nuget Paketen werden in der *.csproj Datei relativ gespeichert. Und zwar relativ im Bezug auf die Solution Datei.

Ich hatte da schon mal Probleme im Zusammenhang mit git submodulen.

Eventuell liegts an was ähnlichem...

sg,
xan

Thema: VS Solution-Verwaltung: CI / CD best practices für GIT
Am im Forum: Rund um die Programmierung

Hallo t2t,

du könntest jeden Service in ein eigenes Repository legen.

Und zusätzlich ein Repository dass alle anderen als submodule enthält und deine Solution zum Debuggen.

sg

Thema: #if #endif, was macht das ?
Am im Forum: Grundlagen von C#

Hallo,

die Symbole definiert man zum Compile-Zeitpunkt. Somit kann man mit den Symbolen steuern, welche Teile kompiliert werden sollen.

Anwendungsbeispiele:

  • Code der z.B. nur in Release oder Debug Builds enthalten sein soll
  • Falls man für verschiedene .NET Versionen baut, kann es sein dass gewisse Teile des Codes anders sein müssen


Gruß

Edit: typos

Thema: 1, 2 oder 3-stellige Dezimalzahl in ASCII-Zeichen umwandeln
Am im Forum: Grundlagen von C#

Hallo,

eine andere Möglichkeit wäre die Encoding Klasse:


var numbers = new byte[] {51, 57, 65};
var chars = Encoding.ASCII.GetChars(numbers);

xan

Thema: Application.CommonAppDataPath ohne Versionsnummer
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Turmoil,

verwendest du das .NET Konfigurationsmodell?
[Tutorial] Konfigurationsmodell im .NET Framework

Das könnte eventuell dafür verantwortlich sein.


Grüße

EDIT: Sorry hab gedacht es geht um AppData nicht um ProgramData

Thema: Effiziente(re)s Speichern von Gaming Maps und -Ständen
Am im Forum: Grafik und Sound

Hi Bradley,

wäre für solche Daten nicht ein Binärformat (TLV, oder was eigenes) sinnvoller?

lg

Thema: Im Setter Änderungen protokollieren --> Endlosschleife
Am im Forum: Grundlagen von C#

Hallo zeh-scharb,

die Eigenschaft LANGUAGE ist rekursiv, darum wird sich euch deine Anwendung aufhängen (Stichwort: Endlos Schleife).

mfg,
Xan

Thema: Listbox im StackPanel: kein Scrollbalken
Am im Forum: GUI: WPF und XAML

Hallo bb1898,

ein StackPanel ist immer so groß wie sein Inhalt. Da die ListBox verwendet intern ein ItemControl welches sich wie ein StackPanel verhält. Somit sieht es für die ListBox so aus als ob genügend Platz vorhanden ist und es werden keine ScrollBars angezeigt.

Ich kann ebenso wie du auch schon geschrieben hast nur empfehlen ein anderes Container Control zu verwenden.

In deinem Fall würde ich das so machen:


<Grid>
	<Grid.ColumnDefinitions>	
		<ColumnDefinition />
		<ColumnDefinition />
	</Grid.ColumnDefinitions>
	<Grid.RowDefinitions>
		<RowDefinition Height="Auto" />
		<RowDefinition Height="*" />
		<RowDefinition Height="Auto" />
	</Grid.RowDefinitions>
   
	<TextBlock Grid.Row="0" Margin="10,5">Im StackPanel</TextBlock>	
	<Border Grid.Row="1" BorderBrush="DarkBlue" BorderThickness="3" Margin="10,5">
		<ListBox ItemsSource="{Binding AlleZeilen}" />
	</Border>	
	<TextBlock Grid.Row="2" Margin="10,5">Im StackPanel, Ende</TextBlock>
	
	
	<DockPanel Grid.Column="1" Grid.RowSpan="3">
		<TextBlock DockPanel.Dock="Bottom" Margin="10,5">Im DockPanel, Ende</TextBlock>
		<TextBlock DockPanel.Dock="Top" Margin="10,5">Im DockPanel</TextBlock>
		<Border DockPanel.Dock="Top" BorderBrush="DarkRed" BorderThickness="3" Margin="10,5">
			<ListBox ItemsSource="{Binding AlleZeilen}" />
		</Border>
	</DockPanel>
</Grid>

Gruß,
Xan

Thema: Single Instance Application mit WPF und C#
Am im Forum: GUI: WPF und XAML

Hallo KPhoenix,

möglich ist dies auf jeden Fall.

Auf Anhieb fallen mir 2 Möglichkeiten ein:
-Du schickst der laufenden Anwendung eine Nachricht damit sich diese in den Vordergrund bringt
-Du suchst das Handle des Fensters der laufenden Anwendung und bringst dies in den Vordergrund

Um einen Win32 Aufruf kommst du meines Wissens nach nicht rum.

mfg,
XaN

Thema: Unterschied zwischen Byte und byte
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Movementroboter,

byte ist das Schlüsselwort in C# für den .Net Framework Datentyp Byte

sg,
Xan

Thema: exe-Datei (Release) startet, schließt sich und öffnet sich wieder
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Sharper30,

du kannst deine setup.exe mit einem gültigen Zertifikat signieren (z.B. COMODO), dann gibts auch keine Probleme mit Virenscannern.

mfg,
Xan

Thema: WPF, MVVM - ListBox - Selektion leeren bei ESC
Am im Forum: GUI: WPF und XAML

Hallo Froggie,

ich würde das im Code-Behind der View machen.

Da es meiner Meinung nach eine reine GUI-Angelegenheit ist, sollte das ViewModel damit nichts zu tun haben.

mfg,
Xan

Thema: [gelöst] Byte-Array auf Struct oder (bestimmes) Objekt casten bzw. darin kopieren
Am im Forum: Rund um die Programmierung

Hallo Michael65589,

entweder per Binary Serialization

oder "zu Fuß" mit dem BinaryReader

mfg,
xan

Thema: Multilanguage GUI - Sprache vs. Länderspezifisch
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo trib,

ich habe 2 Dateien:

-Strings.resx
-Strings.de.resx

In der Anwendung kann der Benutzer dann zwischen folgenden Sprachen auswählen:
Englisch (en-US)
Deutsch (en-DE)
Deutsch (en-AT)
Deutsch (en-CH)

Die Auswahl der Region bestimmt dann im deutschen lediglich Formatierungen (Zeit, Datum, Währung, Zahlen. usw.).
Die Texte für alle 3 deutschen Regionen werden dabei automatisch aus der Strings.de.resx Datei verwendet.

Wenn du jedoch Texte hast die in de-DE und de-AT unterschiedlich sind, reicht es meines Wissens nach aus einfach eine zusätzliche Datei Strings.de-AT.resx anzulegen in der lediglich die Texte enthalten sind, die anders sind.

Aber mit einem Kleinen Testprojekt lässt sich das sicher schnell herausfinden.

mfg,
Xan

Thema: Coding Styles Horror
Am im Forum: Smalltalk

Da hat wohl jemand wenig Vertrauen in die if-Abfrage:


if (oldItems != null)
{
	if (oldItems != null)
	{
		...
	}
	...
}

Gerade im Code vom WPFToolkit gefunden.

Thema: Frage zum Programmierstil: zwei Rückgabewerte [und Alternativen dazu, z.B. Exceptions]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo DERKLAUS,

ich denke Taipi88 hat damit nicht gemeint dem Benutzer eine Exception anzuzeigen. Im anderen Fall zeigt man dem Benutzer ja auch nicht true oder false an, sondern eine Meldung in der genau steht was nicht funktioniert hat.

Eine Exception kann man ja abfangen, und auswerten um dem Benutzer dann etwas anzuzeigen dass dieser auch versteht.


Die Lösung mit den Tuplen finde ich nicht gerade schön. Da ist die Lösung von inflames2k schon um einiges eleganter.

mfg,
xan

Thema: wpf - anpassen von combobox/button farben bei click oder mouseover
Am im Forum: GUI: WPF und XAML

Hallo Destiel,

da wirst du um ein Template nicht rummkommen.

Hier solltest dazu eigentlich alles finden:
ComboBox Styles and Templates

mfg,
xan