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 ThomasE.
Thema: Was ist die effektivste Möglichkeit, eine Memory-Datenbank mit Tabellen zum Testen zu erstellen?
Am im Forum: Datentechnologien

Zitat von Abt
Wenn ich Dich richtig verstehe, dann testest Du hier aber weit mehr als eine Unit.
Das geht ja eher in Richtung Integrationstest, den man ohnehin anders aufbaut.

Hm, ist es wirklich so, dass ich mir nur Arbeit ersparen wollte?
Klar kann ich den memory (Unit-Test) Provider soweit ausbauen, damit er mir aus den übergebenen Informationen der BL aus den XML-Mockdaten korrekt selektieren kann...

In dieser BL sind Kundenspezifische BL-Plugins möglich, diese werden aber dann in den jeweiligen Plugin-Tests abgehandelt.

Ansonsten gibt es soweit keine "Fremdeinwirkungen".

Thema: Was ist die effektivste Möglichkeit, eine Memory-Datenbank mit Tabellen zum Testen zu erstellen?
Am im Forum: Datentechnologien

Zitat von Lars Schmitt
Bei einer eigenen DAL, sollte es je nach implementierung auch einfach möglich sein, die erstellten SQL auf irgendeine Memory DB oder sogar xml oder JSON Dokumeten umzuleiten

Ja, die Mock-Daten liegen in XML vor, nur werden immer explizit immer dieselben Daten geliefert, was ja wohl in gewissen Tests sinnvoll ist.

Das Problem ist, dass die BL die Selektionen (um es einfach zu nennen) manipulieren kann und danach die Anfrage über den DAL macht.

So haben wir hier teils dynamische Kommandos, die ich gerne wie in echt, geliefert bekommen möchte, ohne fixe Datenrückgaben für jeden einzelnen Fall erstellen zu müssen.

Hoffe das es jetzt verständlicher ist?

Da ist wohl die Überschrift etwas irritierend, obwohl es mehr oder weniger dann doch wieder da hinkommt.
Der Eingangspost weicht stattdessen hier schon stärker ab.

Thema: Was ist die effektivste Möglichkeit, eine Memory-Datenbank mit Tabellen zum Testen zu erstellen?
Am im Forum: Datentechnologien

Zitat von T-Virus
Wenn ich dich richtig verstehe, willst du deine Tabelle für Unit Tests als In Memory Tabelle anlegen lassen?
Halte ich nicht für zielführend, da du dann die eigentlichen DB Operationen auf Dateisystem Ebene ausschließt.
Damit deckst du einen anderen Use Case ab als im produktiv System.

Zum einen verständlich, soll ich das so verstehen, dass sogar für solche Tests auf eine eigene Unit-Test DB zugegriffen wird?
Wäre für mich natürlich eine große Erleichterung... Bisher gibt es sowas nicht bei uns, da wie so oft, vieles nicht mehr dem heutigen Standard entspricht... (aber darauf hingearbeitet wird, leider ist der Technologierfortschritt meist schneller :D )

Derzeit noch ADO.NET, sollte sich aber bald ändern.

Der DAL ist eine Eigenproduktion, auch da habe ich schon Ansätze versucht dieses zu ändern...

Thema: Was ist die effektivste Möglichkeit, eine Memory-Datenbank mit Tabellen zum Testen zu erstellen?
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: SQL

Hallo zusammen,

ich hätte nach längeren wieder mal eine Frage wenn es um Unit-Tests geht.

Was ist wohl die effektivste Möglichkeit, eine (welche) memory-Datenbank (Tabellen) zu erstellen, in der man mit DB-Kommandos wie in echt selektieren kann?

Wobei ich die memory-Datenbank als Mock-Quelle verwenden möchte, die Daten ansich sind nicht das Problem.

Bin sicher das es da schon ganz bestimmte Lösungswege gibt, nur tappe ich momentan im Dunkeln...

Bitte um Info, vielen Dank im Voraus,
Thomas

Thema: Wie kann ich den Fehler in meiner Rechnung beheben?
Am im Forum: Grundlagen von C#

Kannst du den Code in den dafür vorgesehenen Code-Tags packen und nicht als PDF Anhang, danke.

Dein Naming im Code ist zumindest für mich etwas unübersichtlich, dadurch tu ich mir schwer.

Aber hierzu:

Zitat
ebe ich jetzt 601 ein zeigt er mir im Label nicht 1202 an sondern 601

sieht es mir stark danach aus, daß er irgendwo durch eine IF Bedingung fällt und gar nicht berechnet wird.

Thema: Was ist der Unterschied zw. Methode überladen und Optionalem Parameter?
Am im Forum: Grundlagen von C#

Noch dazu:

Überladungen verwendet man auch oft um die Abwärtskompatibilität aufrecht zu erhalten, bei Erweiterungen oder dergleichen.

Das was @Bhaal sagt ist auch wichtig, ich denke noch dazu zu sagen:
Wenn du versuchst überladene Methoden zu ändern, indem sie stattdessen optionale Parameter aktzeptieren (oder umgekehrt) ist es eine Änderung der Methodenstruktur, mit dem fremde Assemblies, wenn sie nicht neu erstellt werden, nicht umgehen können, da sie die Methode auf einmal nicht mehr finden.

MethodNotFoundException heißt glaub ich das Zauberwort...

Da muß man aufpassen.

Thema: Wie Titel vom CD abspielen?
Am im Forum: Grafik und Sound

Für mich wäre das Thema auch interessant.

Das Beispiel ist schon sehr alt, gibt es da nix aktuelleres dazu? Ich persönlich konnte auf die Schnelle nix finden...

Soweit ich es aus seinem Beitrag rauslesen kann möchte er wissen, wie man die Tracks abspielen kann...

Wenn schon eigener Code vorhanden, wäre es toll etwas herzuzeigen aber ich denke es wurde 1:1 von Beispiel abkopiert?

SG

Thema: Microsoft Edge mit Chromium via Dev Channel nun verfügbar
Am im Forum: Szenenews

Ja, aber trotzdem sehe ich nicht ein, daß ich es nicht selbst regeln kann, wann die Tabs ansich geladen werden --> unnötige RAM Verschwendung

Nicht falsch verstehen, mit gefällt die Edge sehr gut, hab eine Zeit lang damit gearbeitet, nur über 1,5GB Verbrauch ist mir eindeutig zu viel. (Klar, ist immer die Frage was in den Tabs offen bleibt und ja, man könnte mit Lesezeichen arbeiten, nur ist es nicht meine Arbeitsweise)

Thema: Microsoft Edge mit Chromium via Dev Channel nun verfügbar
Am im Forum: Szenenews

Zitat von CB.NET
Ich finde , daß der Edge wirklich sehr fix und problemlos läuft.

Mit dem Nachteil den ich bis vor ein paar Monaten noch hatte (kenn den aktuellen Status nicht), daß er ein richtiger Speicherfresser ist, da er anscheinend aus performance-Gründen verzögert alle Tabs nacheinander ladet, egal ob sie benötigt werden oder nicht.

Anders als z.Bsp. beim Firefox. Eine Einstellung dazu hatte ich im Edge nicht gefunden.

Thema: Überwachen von einer SQL Server Datenbanktablle
Am im Forum: Datentechnologien

Zitat von RayYago
Dort werden Einträge abgestellt wann z.B. ein Vorgang komplett verpackt wurde. Sobald dieser Eintrag in der Datenbank erscheint, muss Sekunden später ein Lieferschein gedruckt werden. Es kann mehrere Einträge die Minute geben.

Ist nicht schon der Ansatz verkehrt?

Wieso werden die Lieferscheine nicht schon vom vorherigen System erstellt bzw. gibt es da keine Schnittstelle dazu, zu dem System?

Thema: Anwendung funktioniert ausschließlich auf 64 Bit
Am im Forum: Datentechnologien

Nein habe ich nicht, sind alle durchgehend entweder Any CPU oder x64.

Ha aber bei der WPF Anwendung ist im Build Reiter ein Häkchen unter Plattformziel mit 32 Bit bevorzugen!

Nachdem ich es entfernte, funktionierte es klaglos....

Habe nie wirklich darauf geachtet, war bisher auch nicht notwendig, tja, wieder was dazugelernt...

Danke für die Hilfe und auch danke Abt für deinen Hinweis mit den veralteten SqlClient!

[Edit1]Nein Abt, sowas mache ich nicht. Da hätte es sicher schon viel früher Probleme gegeben, wie es sich herausstellte war es der übergangs-WPF-Client.[/Edit1]

SG Thomas

Thema: Anwendung funktioniert ausschließlich auf 64 Bit
Am im Forum: Datentechnologien

Hallo,

danke für die Antworten.

Die Anwendung wird unter x86 ausgeführt.

.NET Framework 4.5.1, dachte mir schon das ich dies hinzuschreiben hätte sollen... da habt ihr nun schon geantwortet ;)

Thema: Anwendung funktioniert ausschließlich auf 64 Bit
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: SQL Server 2014 (Express)

Hallo zusammen,

bin gestern auf ein Problem gestoßen, wie ich es bisher nie hatte.

Es geht hier um einen Übergangskonfigurator, der sich mehr oder weniger direkt mit dem SQL Server verbindet.

Wenn meine Anwendung unter Any CPU erstellt wird und man versucht dann eine Verbindung zum SQL-Server herzustellen, kommt folgende Fehlermeldung:

Fehler
System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 0 - The remote computer refused the network connection.) ---> System.ComponentModel.Win32Exception (0x80004005): The remote computer refused the network connection
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
...
..
.
ClientConnectionId:00000000-0000-0000-0000-000000000000
Error Number:1225,State:0,Class:20

Sobald ich die Anwendung auf x64 erstelle, gibt es keine Probleme.

Das Betriebssystem ist ein 64Bit System.

Hatte dieses bis jetzt noch nicht und wollte fragen, ob mir wer einen Hinweis dazu geben kann?

Vielen Dank im Voraus,
Thomas

Thema: Wo findet man WPF/C# Beispiele für eine Verwaltungssoftare (Adresse, Lager,...)
Am im Forum: Smalltalk

Hallo,

also ich verstehe deine Motivation, sieh zu, daß du sie am leben hältst, denn du wirst sie brauchen wenn du von Grund auf alles lernen möchtest.
Ich verstehe auch, daß du aus einem bestehenden Sourcecode lernen möchtest um sich viele Dinge abzuschauen.

Nur wirst du niemals einen Sourcecode finden, den du zu 100% adaptieren und erweitern kannst. Zudem besteht immer die Gefahr, daß das was du bekommst, veraltet, nicht mehr aktuell oder einfach nicht (mehr) sicher ist.

Es gibt in dem Bezug keinen einfachen Weg außer mit meist englicher Hilfe sich die Grundkenntnisse anzueignen.

Außer du findest einen privaten Lehrer mit entsprechender Erfahrung, nur brauchst dann wahrscheinlich so viel Geld, daß du gleich ein fertiges Produkt kaufen kannst.

Thema: Fenster skalieren nur für die Höhe erlauben
Am im Forum: GUI: WPF und XAML

Also in der Doku steht es anders: https://docs.microsoft.com/de-de/dotnet/api/system.windows.frameworkelement.loaded?view=netframework-4.8

Zitat
Tritt auf, wenn das Element ausgerichtet und gerendert sowie zur Interaktion vorbereitet wurde.

Könnte mich auch täuschen, da ich nie so ein Problem hatte (soweit ich mich erinnern kann )

Schlimmsten Falls gäbe es noch das SizeChanged inwieweit man dieses Event handelt sodass nur der letzte Aufruf verwendet wird danach das EVent De-Registriert wird, weiß ich jetzt nicht.

Zudem könnte man es selbst testen, mittels Breakpoints, welches Event zuletzt aufgerufen wird.

Wenn es doch das Loaded Event ist, dann dürfte das Problem woanders liegen.

Thema: Fenster skalieren nur für die Höhe erlauben
Am im Forum: GUI: WPF und XAML

Wieso nicht, die 2te Antwort würde hinkommen, nur daß du halt MinWidth und MaxWidth mit der aktuellen Breite setzt und ResizeMode entsprechend änderst im Loaded.

Natürlich könnte man das auch MVVM fähig machen...aber die Grundidee sollte so funktionieren...

Thema: Outlook: Export Programm bringt "System.OutOfMemoryException"
Am im Forum: Office-Technologien

Hallo, kann es sein das die Platte voll läuft? Ganz eine einfache Frage ;)

Thema: Outlook: Export Programm bringt "System.OutOfMemoryException"
Am im Forum: Office-Technologien

An welcher Stelle genau in dem Code oben tritt der Fehler auf?

Thema: ShowDialog Alternative in Wpf?
Am im Forum: GUI: WPF und XAML

Zitat von Tzigo
Die Anzahl der Spiele wird durch eine For-Schleife gezählt, deren Wert je nach Anzahl der Spiele und Spieler variiert.
.
.
.
Gibt es irgendeine Möglichkeit die Schleife zu pausieren, abgesehen von ShowDialog, solange das Spielwindow offen ist?

Ich verstehe nicht ganz den 1sten Satz. Die Anzahl der Spiele wird durch eine For-Schleife gezählt, also stimmt es wie ich es mir vorstelle, es gibt eine bestimmte Anzahl an Spiel-runden, ein so ein gesamtes Spiel wird in innerhalb einer Schleife abgebildet?

Ist das so richtig?

Thema: PDF in einer WPF GUI anzeigen und bearbeiten können.
Am im Forum: GUI: WPF und XAML

Oder auch dieses offene kostenlose Online-Buch für jeden als grundlegenden Einstieg: Openbook Rheinwerk-Verlag

Ist zudem hier auf der Webseite zur linken Seite im Hauptmenü zu finden, sowie noch weitere Einstiegshilfen.

Thema: Ansprechen von Eigenschaften und Methoden von Objekten (objektorientierte Programmierung)
Am im Forum: Grundlagen von C#

Um es noch spezifischer zu beantworten, wäre etwas Code nicht schlecht, um sich generell ein Bild machen zu können.

Vielleicht fehlt ihm ja nur ein kleiner Stupser zu dem großen Ahaaaa

Thema: Wie implementiert man am Besten eine Rekursion in einer Breitensuche?
Am im Forum: Rund um die Programmierung

Wozu brauchst du dann eine Breitensuche?

Meine Idee wäre, das Spielfeld in einen (unsichtbaren) Raster darzustellen, jede Figur bewegt sich pixel für pixel in den nächsten Raster...

In dem Fall (aber auch sonst) kann dir die Breite egal sein, da du so oder so eine fixe Spielfeldgröße benötigst, somit hast du schon mal das Maß und nach dem kann man alles andere richten...

Alles so rein aus dem Kopf heraus ;)

Thema: ASP.NET Core Razor Page - Formular verhindern von mehrfachen Submit (serverseitig)
Am im Forum: Web-Technologien

Ich z.Bsp. arbeite demnächst am Load-Balancing, da sind Daten im RAM nur sehr begrenzt zu empfehlen, sonst würde das ganze System nicht richtig funktionieren ohne das die Server voneinander wissen müssen und das sollte es natürlich nicht sein.

Thema: Daten in einer bestehenden Spalte einfügen
Am im Forum: Datentechnologien

Hallo,

meinst du insert oder update?

Bei insert kannst du keine Suchkonditionen mit where angeben... da du hier eine ganze Zeile neu einfügst...

Thema: Microsoft.ACE.OLEDB.12.0 bringt auf einer Maschine, dass der Treiber nicht installiert ist
Am im Forum: Office-Technologien

Dieser Link hier https://www.microsoft.com/en-us/download/confirmation.aspx?id=39358 ist die 64Bit Version, zeigt er mir an wenn ich draufklicke.

Brauchst ja aber die 32er oder täusch ich mich, vielleicht hast du das übersehen?

Hatte auch schon damit gearbeitet, dieses 32 64 bin ich auch drübergestolpert...

SG

Thema: Das Experten-Dossier für .NET-Entwickler liegt bereit
Am im Forum: Szenenews

Wow, besten Dank für die Bettlektüre in hoher Qualität!

Thema: Mergen von Rows in einer DataTable
Am im Forum: GUI: WPF und XAML

Zitat von TheLion092
.) Ich lasse mir alle AD-Gruppen für einen Ordner auslesen und lese dann aus diesen AD-Gruppen wiederum alle User aus.
.) Die Benutzer werden in einer DataTable gespeichert und dann im Programm an ein DataGrid weitergegeben.

Hallo,

wie schon von den Vorrednern gepredigt, sollte man hier eher Klassen-Objekte erstellen, die so einen gewünschten Datensatz wie du ihm haben willst, aufgebaut ist.
Und anstatt jetzt den 2ten Punkt dazu zu verwenden, die Daten in eine DataTable zu schreiben, befüllst du einfach jeden Benutzer in ein so eine Klasse und hast als Ergebnis eine Liste mit Benutzern die jeweils in Klassen sitzen

Unter Umständen kannst du schon beim Befüllen der Klassen mit einer eindeutigen Id in jedem Schleifendurchlauf nach einer vorhandenen Klasse mit derselben Id in der Liste suchen. Wenn gefunden ergänzt du einfach die Daten, ansonsten erstellst einfach wieder eine neue Klasse.

Somit bekömmst du dann schon die fertig anwendbare Klassenliste aller Benutzer.

Diese Liste kann man dann genauso an das DataGrid oder andere Controls binden...

Grüße

Thema: Einfach mal Danke sagen :-)
Am im Forum: Smalltalk

Ich möchte mich dem auch gleich anschließen und sagen, daß ich unter Anderem auch in diesem Forum meine etwas steilere Lernkurve zu verdanken habe!

Sei es jetzt wenn ich selbst Fragen stellte oder nur stiller Beobachter war und ja @Abt, du hast wieder mal recht, sich selbst zu helfen ist oft gar nicht so einfach...

schanke Tön!

Thema: dynamische If-Abfrage
Am im Forum: Rund um die Programmierung

Zitat von CoLo
Mein erster Gedanke war...

Ist auch eine Variante, wenn auch durch die Schreibweise etwas schwer zu durchschauen.

In meinem Fall bietet es sich an, auch andere Operatoren zu verwenden außer == und &&.


Die erste Lösung von @Papst finde ich auch sehr gut, allerdings könnte dieses nicht konfiguriert werden.
Ist halt immer die Frage wie weit man gehen will.

SG

Thema: dynamische If-Abfrage
Am im Forum: Rund um die Programmierung

Hallo,

also mein Beispiel war ja nur ein Anhaltspunkt. Könnte man noch um einiges Erweitern, genauso wie das automatische Befüllen solcher Informationen, allerdings muß man sich halt für eine Vorgehensweise entscheiden.

Hier mal das vorherige Beispiel mit den index-Werten mit der einfließenden Idee von @Th69:


internal class Combo
{
    public Combo()
    {
        this.Id = -1;
        this.Z1 = -1;
        this.Z2 = -1;
        this.SubCombo = null;
    }

    public int Id {get;set;}
    public int Z1 {get;set;}
    public int Z2 {get;set;}
    public Combo SubCombo {get;set;}

    public bool Init(int id, List<int> indexes)
    {
        if(indexes == null) return false;
        if(indexes.Count == 0) return false;
        // Prüft ob die Anzahl immer eine Gerade ist:
        if(indexes.Count % 2 == 1) return false;
        Id = id;
        // EDIT1: new List<int>(…)
        // Sonst wird die Liste die von außen kommt verändert (Einträge entfernt), wäre in dem Fall eigentlich nicht richtig
        OnInit(new List<int>(indexes));
        return true;
    }

    private void OnInit(List<int> indexes)
    {
        Z1 = indexes[0];
        indexes.Remove(0);
        Z2 = indexes[0];
        indexes.Remove(0);
        if(indexes.Count == 0) return;
        SubCombo = new Combo();
        SubCombo.OnInit(indexes);
    }

    public bool IsMatch(params int[] data)
    {
        if(data == null) return false;
        if(Z1 < 0 || Z1 > data.Lenght - 1 || Z2 < 0 || Z2 > data.Lenght - 1) return false;
        if(data[Z1] != data[Z2]) return false;
        if(SubCombo == null) return true;
        return SubCombo.IsMatch(data);
    }
}

// In der Anwendung:
int[] ZDATA = new int[13];
ZData[0] = 10;
ZData[1] = 11;
ZData[2] = 10;
ZData[3] = 12;
//usw.....

List<Combo> combos = new List<Combo>();
List<List<int>> simpleRawTemplates = new List<List<int>>();
// K[1] = "Z1[0] == Z1[1] && Z1[0] == Z1[2]";
simpleRawTemplates.Add(new List<int>(new int[]{0, 1, 0, 2}));

for(int id = 0; id < indexes.Count; id++)
{
    Combo c = new Combo();
    c.Init(id, indexes[id]);
    combos.Add(c);
}

int treffer = -1;
foreach(Combo c in Combos)
{
    if(c.IsMatch(ZData))
    {
        treffer = c.Id;
    }
}

Nur nützt das alles nix wenn man es nicht versteht was da passiert. Beim Debuggen kann man jedoch alles nachvollziehen und dabei leichter dazu lernen. Ist auch eher eine Ausnahme das ich soviel vorarbeite ;)