Laden...

Forenbeiträge von serial Ingesamt 902 Beiträge

02.11.2010 - 10:40 Uhr

Hallo,

ich wüsste nciht wieso der Reader dann abbrechen sollte.
Du benutzt ja eigene Objete (Connection etc) für die 2te abfrage.

Vielleicht wird die Connection geschlossen, aber auch das kann ich mir nicht vorstellen.

Ich muss dazu sagen, ich habe schon lang nicht mehr mit ADO.net selbst sowas gemacht.

mfg
serial

02.11.2010 - 10:33 Uhr

Ach, um welche geht es denn?
Ich dachte es geht um den Reader, der richtig mit ExecuteReader gestartet wird.
Oder geht es um das innere Scalar?

mfg
serial

02.11.2010 - 10:14 Uhr

Nein überhaupt nicht!

...und es liegt auch nicht in meinem Interesse unzählige Patterns in mein Programm einzuabuen ich nutze das MVVM Pattern das reicht für das Programm so gross ist es auch nicht.

also ich finde, egal wie groß das programm ist, sollte man dennoch evrsuchen es sauber umzusetzen.
Und MVVM hat nix mit der Strukturierung der DAL zur BL zu tun.

mfg
serial

02.11.2010 - 10:12 Uhr

Zeig doch mal etwas code.

Sonst schau mal hier.

mfg
serial

02.11.2010 - 10:05 Uhr

Bekommst du vielleicht eine Exception?
Möglicherweise kann ein Wertz aus der DB nicht umgewandelt werden, oder ist DBNull?

mfg
serial

[Edit] weiterhin lege ich dir nahe, parameter zu verwenden, statt den Sql-Seelct händisch per string zusammenzufriemeln.

02.11.2010 - 09:49 Uhr

Hallo,

bist du dir sicher, das mehrere Datensätze bei deiner Abfrage zurückkommen?
Hast du das überprüft, zB mit dem ManagementStudio?

mfg
serial

02.11.2010 - 09:47 Uhr

Hallo,

alles hier beschriebene funktioniert nicht?

mfg
serial

02.11.2010 - 09:43 Uhr

Hallo,

dann binde den Scriptmanager einfach auf deiner hauptseite, und nicht in jedem usercontrol ein.

mfg
s

01.11.2010 - 20:19 Uhr

Hallo,

ich bin mir nicht sicher wie du diese sachen mischen kannst.
Weiterhin denke ich, dass du mit jQuery dir diese funktionalität per ajax nachbauen kannst.

Im einfachsten fall würde ich beim buttonclick deine Callbackmethode aufrufen, welche dann die Daten abfragt, und das ergebniss zurück an eine andere javascriptfunktion schickt, welche diese dann anzeigt, und danach deine visuellen sachen toggeln.

Wo genau hapert es denn?

mfg
serial

01.11.2010 - 17:05 Uhr

Hallo,

die google suche hätte dich gleich dahin geführt:
ICallbackEventHandler-Schnittstelle

mfg
serial

01.11.2010 - 14:56 Uhr

Hallo,

vielleicht kannst du uns die entsprechenden Codestücke mal zeigen?
So wird es sonst schwer, einen fehler zu finden.

mfg
serial

01.11.2010 - 14:35 Uhr

Hallo,

was macht base.OnPrint() ??

[Edit] möglicherweise kommt es da drin nochmal zu einem Paint

mfg
serial

01.11.2010 - 14:22 Uhr

Hallo,

sorry fürs pushen!
Aber hat hier noch jemand eine meinung zu meinem problem?

mfg
serial

01.11.2010 - 14:20 Uhr

Hallo,

@dNi3L: ja das weiss ich, darum habe ich in meiner oberen antwort einfach gesagt, dass einfach lambdas nicht funktionieren. Aber danke für die genauere erklärung warum dies so ist. Soweit hatte ich mich gerade nicht damit beschäftigt 😦

mfg
serial

01.11.2010 - 14:06 Uhr

HAllo,

nur weil du in der JQuery-Methode die Serverseitigemethode aufrufst, heisst das nciht, dass sie asynchron erfolgt.

Entweder du rufst eine seite, welche das DB update macht, per Query auf (.aspx), oder du könntest für diesen fall vielleicht auch ICallbackEventHandler benutzen.

mfg
serial

01.11.2010 - 14:02 Uhr

Hallo,

ich meine sowas:


//geht nicht
d.OnEvent += (o, e) => Console.WriteLine("JA");
//geht
 d.OnEvent += new EventHandler((o, e) =>Console.WriteLine("JA"));

mfg
serial

01.11.2010 - 12:51 Uhr

Hallo,

benutzt du normale asmx Services, oder WCF?
Du könntest versionstolerante DatenTransferObjekte benutzen.

Weiterhin sollte die Schicht, welche auf deine DB zugreift so und so unabhängig vom service arbeiten, somit könntest du diese schicht ändern, ohne das der service dies mitbekommt, und umgedreht.

mfg
serial

01.11.2010 - 12:32 Uhr

Hallo,

ja ich glaube dynamic kann events! Allerdings nicht rein als Lambdaausdruck.

mfg
serial

31.10.2010 - 22:01 Uhr

Hallo,

auch wenn es schon etwas älter ist, aber...

Business Layer (Eine Client bzw Server API die Data Access und Network Layer unter sich vereint)

... finde ich nicht so gut, denn die BusinessLayer sollte doch von Netzwerktechnik garnix wissen! Nur für leute die hier lesen.

Die Networklayer sollte wenn, dann über der BusinessLayer liegen.

mfg
serial

28.10.2010 - 09:11 Uhr

Hallo,

also ein DataSet hat bei LinqToSql eigentlich nix zu suchen.

mfg
serial

28.10.2010 - 09:02 Uhr

wie mache ich es das sie 5 annimmt?

das is kein witz, oder?

Das sind Grundlagen, ließ bitte erst ein entsprechendes Buch 🛈 , wenn du dann noch fragen hast, helfen wir gern!

mfg
serial

27.10.2010 - 16:13 Uhr

Hallo,

wie schon in dem anderen Thread gesagt, solltest du einen Dienst verwenden.
Ein HttpModule finde ich für ungeeignet, da es bei jeder Anforderung durchlaufen wird, und eher Anforderungsspezifische arbeiten erledigen soll.

Erstelle dir einen Dienst (Windowsdienst zB, und lass diesen aufm deinem Server laufen).

mfg
serial

27.10.2010 - 16:05 Uhr

HAllo,

@MarsStein: das Ergebnis ist (bis jetzt) nur für den direkten Aufrufer wichtig.
Dieser können ja unterschiedliche Clients sein.
Ich finde event auch flexibler, allerdings macht ein Rückgabewert für mich einen implizierteren Eindruck zum Auswerten des Ergebnisses.

Aber das die Prüfung in dieser BusinessService-Klasse zu Hause ist, findest du in Ordnung?

[Edit]
ich fühl mich eben unwohl dabei, ein ValidationResult von einer Save-Methode zurückgeben zu lassen! Allerdings will ich verhindern, dass der Aufrufer selbst die Validierung anstoßen muss. Dennoch braucht er das Ergebnis der Validierung, um ggf Meldungen anzuzeigen.

mfg
serial

27.10.2010 - 14:18 Uhr

Hallo,

Wahrscheinlich ist bei der Installation etwas krumm gelaufen, sodass die Eingabeaufforderung nicht im SDK Bin Verzecihniss "startet".

mfg
serial

27.10.2010 - 12:57 Uhr

Hallo,

auf Grund mehrere Diskussionen in anderen Threads, habe ich mich dazu entschieden, für meine Entitäten eine eigene RuleEngine zu schreiben, welche die jeweilige Entität übergeben bekommt, und auf dieser die Regeln anwendet.

Somit greift der Client durch eine BusinessLayerFasade auf meine Entitäten zu, und stößt auch das Speichern über diese Fasade an (nicht direkt über die Entität).

So, nun kommt bei der Validierung allerdings ein Result zurück, ob die Entität in Ordnung ist und gespeichert wurde, oder ob etwas nicht stimmt, und somit nciht gespeichert wurde:

BusinessLayerFasade:


public class AdministrationFasade:BaseFasade
    {
        public mainTemplate CreateNew()
        {
            return new mainTemplate();
        }

        public mainTemplate GetById(int id)
        {
            return StoreFactory.Context.mainTemplate.Where((mt) => mt.mainTemplateID == id).FirstOrDefault();
        }

        public void SaveTemplate(mainTemplate tpl)
        {
            var engine = new MainTemplateRuleEngine();
            ValidationResult result = engine.VerifyAll(tpl);
            //?? hier das Result als MEthopdenrückgabe verwenden?
            //oder einen Callback feuern, an den der Client sich binden musste?
            
        }
    }

ValidationResult:


 public class ValidationResult
    {
        public List<ValidationRuleInfo> FailedRules { get; set; }
        public bool Success { get; set; }
    }

Frage ist nun bei SaveTamplate-methode:

Sollte diese das Result direkt zurückgeben, sodass der Client es verarbeiten kann?
Oder sollte der Client sich an ein Event hängen, welches gefeuert wird, wenn die Validierung fertig ist?

Oder sollte der Client selbst die Validierung anstoßen müssen, und danach seperat speichern?

freue mich über eure Meinungen

mfg
serial

27.10.2010 - 09:15 Uhr

hallo,

hier hast du ein beispiel:
http://code.google.com/p/jamesshorearcdesignchallenge/source/browse/#hg/source

dies wird auch hier im Forum besprochen, musst du mal suchen.

MEF ist ManagedExtensibilityFramework, und eher dazu geeignet die eigene Anwendung Erweiterbar zu halten. Mit EBCS hat dies nicht direkt etwas zu tun. MAn könnte EBCs wohl damit aber laden.

mfg
serial

26.10.2010 - 14:57 Uhr

@erazor:

das lineare problem was gfoidl darstellt wird mit meiner lösung erreicht.
Aber ich bin auch der meinung, dass es wohl nicht linear ist?!

mfg
serial

26.10.2010 - 13:50 Uhr

Hallo,

ja, wenn du es auf der DB modellieren würdest.
Du holst dir aber die beiden listen eher, und er wird sie vermutlich also IEnumerable in deiner eigentlichen Abfrage sehen, also als Objekte im Speicher, und nichtmehr als DB-Tabellen. Somit funktioniert das nicht.

Du musst dein SQL-Statement so auch in Linq nachbauen.

mfg
serial

26.10.2010 - 13:44 Uhr

Hallo,

müsste es nicht einfach sowas einfaches amchen?


public class AlcoholCalculator
    {
        double _currentValue = 0.0;
        DateTime _lastDate = DateTime.MinValue;
        TimeSpan _elapsedTime;

        public AlcoholCalculator(double value, DateTime date)
        {
            _currentValue = value;
            SetStandardValues(date);
        }

        public void Add(double newValue, DateTime date)
        {
            _elapsedTime = date - _lastDate;
            ClaculateNewValue(newValue);
            SetStandardValues(date);
        }

        private void ClaculateNewValue(double newValue)
        {
            //minuten errechnen
            int elapsedMinutes = _elapsedTime.Hours * 60 + _elapsedTime.Minutes;

            //alle stunde wird 0.1 promille verarbeitet
            _currentValue -= (0.1 * elapsedMinutes) / 60;

            //negative promille gibts net
            _currentValue = _currentValue < 0.0 ? _currentValue = 0.0 : _currentValue;

            _currentValue += newValue;
        }

        private void SetStandardValues(DateTime date)
        {
            _lastDate = date;
            _elapsedTime = new TimeSpan(0, 0, 0);
        }

        public Double CurrentValue
        {
            get
            {
                return _currentValue;
            }
        }
    }

Anwendung:


//2 bier um 10
Alcohol alc = new Alcohol(0.4, new DateTime(2010, 10, 1, 10, 00, 00));
//gibt 0.4 aus
            MessageBox.Show(alc.CurrentValue.ToString());
//und nochmal 1 bier um 13uhr
            alc.Add(0.2, new DateTime(2010, 10, 1, 13, 0, 0));
//gibt 0.3 aus
            MessageBox.Show(alc.CurrentValue.ToString());

mfg serial

26.10.2010 - 12:14 Uhr

Hallo,

filterdin und filterform sind ja schon gefilterte listen welche im speicher liegen.
Deine abfrage auf die db kann ja nicht in sql umgewandelt werden. Du müsstest eine abfrage erstellen, welche komplett in sql umgewandelt werden kann.

mfg
serial

[Edit] möglicherweise könntest du hier mit joins, oder verschachelten wheres arbeiten.

26.10.2010 - 12:12 Uhr

Hallo,

du musst eben von einer Zeitmarke zur nächsten rechnen.
Erst den abbau, und auf den rest den neuen drauf (keine ahnung wie man das wirklich berechnet).

mfg
serial

26.10.2010 - 11:14 Uhr

HAllo,

ich versteh dein Problem nicht ganz.
Wenn das Bier ausgewählt wird, muss das System ja wissen, wieviel Alkohol es hat, und wieviel Zeit benötigt wird, diesen abzubauen, oder?

Somit kannst du doch, wenn er 22 Uhr und 1 Bier wählt, einfach berechnen!
Wahrscheinlich habe ich dein problem nciht richtig verstanden 😦

mfg
serial

26.10.2010 - 09:36 Uhr

Hallo,

keien MessageBox aus dem DoWork anzeigen.
Für den fehelrfall ist genau die Error-Eigenschaft gedacht.
enn ein Fehler auftritt, wird DIESER Fehler der Error-Eigenschaft zugewiesen.

Du darfst natürlich NICHT auf Result zugreifen, sondern musst VORHER die Error-Eigenschaft überprüfen, denn da steht die Exception drin...
Das steht aber alles ganz klar in der MSDN beschrieben.

http://msdn.microsoft.com/de-de/library/system.componentmodel.asynccompletedeventargs.error(v=VS.80).aspx

und wichtig

http://msdn.microsoft.com/de-de/library/system.componentmodel.runworkercompletedeventargs.result(v=VS.80).aspx
mfg
serial

25.10.2010 - 16:37 Uhr

Hallo,

die genauere Exception müsste in der von Result gegeben Exception als InnerException vorliegen.

mfg
serial

25.10.2010 - 11:55 Uhr

@DeViL: ja du kannst trotzdem andere Benachrichtigen, wenn du sie im Service statisch hältst!

Schau dir doch mal das Beispiel an:

WCF / WPF Chat Application

mfg
serial

23.10.2010 - 13:15 Uhr

Hallo,

was soill denn MyTool machen?
Vielleicht könntest du den Aufrud in deine MyClass packen?
Oder das Visitormuster?

Sonst wirst du mit Reflection vielleicht zu deinem Ziel kommen.

mfg
serial

22.10.2010 - 10:00 Uhr

Hallo,

ja, du solltest dir mal die Posts hier durchlesen.

Aber bedenke, EBCs sind noch in der "Forschung".

mfg
serial

21.10.2010 - 20:52 Uhr

@FZelle,

geht es bei ActiveRecord nicht eher darum, dass die Entität selbst fürs speichern zuständig ist?
Hätte ja nicht direkt was mit Businessvalidierung zu tun.
Oder verwechsel ich gerade was?

mfg
serial

21.10.2010 - 16:48 Uhr

HAllo,

du kannst die auch mal EventBasedComponents anschauen.

mfg
serial

21.10.2010 - 16:39 Uhr

Man könnte sogar beide möglichkeiten kombinieren =)
Die regeln als XML halten, mit einem indentifikator für einen typ, und eine factory erstellt je nach Typ aus der XML die entsprechende Strategy mit einem Parser 😉

mfg
serial

21.10.2010 - 16:37 Uhr

@gfoidl:

alsoder Presenter benutzt eigentlich die BL!
Die hier allerdings im großen und ganzen nur aus DomainEntities besteht.

@FZelle:

das hört sich für mich sinnig an, was mich aber wieder zur unsprungsfrage führt!
Die validierung im presenter ist klar, aber in der BL, das ist wieder der Punkt!
Ob die Entität Mainemplate die Validierung der immer benötigten Rules vornimmt, oder eben wieder eine Klasse um die Entität herum.

mfg
serial

21.10.2010 - 15:53 Uhr

Hallo,

du könntest die Formeln über das Strategymuster anwenden.
Die entsprechende Strategy wird ja nach Wert durch eine Factory erzeugt.

mfg
serial

21.10.2010 - 15:51 Uhr

Ok, ich dachte insgeheim, dass diese RuleEngine eigentlich mit zur BusinessSchicht gehört. Würde sie dann ja nicht mehr?!

mfg
serial

21.10.2010 - 14:13 Uhr

Hallo gfoidl,

genau das ist auch meine meinung, die frage ist nur, wer soll diese aufrufen?
Der Client direkt:


public void btnClick(....)
{
 if(RuleEngine.VerifyAll(template))
   template.Save();
}

hier ist es nciht schön, da die überprüfung an keinemfesten ort ist

oder versteckt hinter einer useCase-Fasade:


public void btnClick(....)
{
 TemplateManager.Save(template)
}

public class TemplateManager
{
 public static void Save(mainTemplate template)
 {
   if(RuleEngine.VerifyAll(template))
      template.Save();
 }
}

hier bin ich mir nicht sicher, ob eine zusätzliche schicht sauber ist

oder gibt es hier noch eine ganz andere möglichkeit, die mir gerade nicht einfällt?

mfg
serial

21.10.2010 - 13:09 Uhr

Genau!

Ich dachte es geht hier um zirkuläre referenzen im objektbaum, und nicht im einen referenzgleichheitsmechanismus.

mfg
serial

21.10.2010 - 11:27 Uhr

Hallo,

ich gehe davon aus, dass es eine unmanaged dll ist.
Dazu benötigst du PInvoke, schaue hier.

mfg
serial

21.10.2010 - 11:25 Uhr

Hallo,

ich habe mit dem Isreference-Attribute noch nciht gearbeitet!
Aber bist du dir sicher, dass es wirklich bedeutet, dass es gleiche Referenzen auf ein Objekt sind?

Contains wird ja auf eine echte Referenzgleichheit prüfen.

mfg
serial

21.10.2010 - 11:16 Uhr

Hallo,

ich finde es ungünstig, ein modul in einem thread laufen zu lassen! Bzw was genau meinst du damit?

Ich würde, wenn überhaupt notwendig, die aufrufe der module asynchron ausführen.

mfg
serial

20.10.2010 - 14:51 Uhr

@impact: erstellst du deinen Button zufälligerweise dynamisch? Also nicht im Designer auf deine Page gezogen?

mfg
serial

20.10.2010 - 14:44 Uhr

Hallo Leute,

wie in einem anderen Beitrag schon begonnen, geht es mir hier um eine RuleEngine.
Meine Farge heute ist allerdings, wer führt diese Überprüfung wo durch?

Ausgehende von MainTemplate-Objekt (siehe Anhang), muss eine Überprüfung angestoßen werden, die den Baum als "logisch" für den Benutzer einstuft.
Ein Baum kann "unlogisch" sein, selbst wenn alle Elemente gültige Werte haben, und gespeichert werden könnten. Es hat also nix mit Konsistenz zu tun.

Wer soll nun diese Logik-Regeln anwenden?
Soll das MainTemplate eine Instanz einer ruleEngine beherbergen, und diese aufrufen?

Oder soll von irgendwoher aussen (nur von wo?) die RuleEngine aufgerufen werden, und den Baum übergeben bekommen?

Also als Beispiel:


//RuleEngine im Baum selbst
public class MainTemplate
{
 IRuleEngine _engine;
 public MainTemplate()
 {
   _engine =new BaumRuleEngine();
 }

 public bool Verify()
 {
  return _engine.VerifyAll(this);
 }
}



//oder von aussen eben
 IRuleEngine _engine = new BaumRuleEngine();
 if(engine.VerifyAll(baum))
   baum.Save();
 else
  //Fehler melden

Im zweiten Fall ist nur der Aufrufkontext interessant!
In einem MainTemplateWrapper?
In einer Fasade mit der der Clietn kommuniziert, und dies UseCase-Methoden bereitstellt?Und bevor die Fasade an das MainTemplate weiterleitet, erst die RuleEngine aufruft?

mfg serial