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
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
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
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.
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
Hallo,
dann binde den Scriptmanager einfach auf deiner hauptseite, und nicht in jedem usercontrol ein.
mfg
s
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
Hallo,
die google suche hätte dich gleich dahin geführt:
ICallbackEventHandler-Schnittstelle
mfg
serial
Hallo,
vielleicht kannst du uns die entsprechenden Codestücke mal zeigen?
So wird es sonst schwer, einen fehler zu finden.
mfg
serial
Hallo,
was macht base.OnPrint() ??
[Edit] möglicherweise kommt es da drin nochmal zu einem Paint
mfg
serial
Hallo,
sorry fürs pushen!
Aber hat hier noch jemand eine meinung zu meinem problem?
mfg
serial
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
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
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
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
Hallo,
ja ich glaube dynamic kann events! Allerdings nicht rein als Lambdaausdruck.
mfg
serial
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
Hallo,
also ein DataSet hat bei LinqToSql eigentlich nix zu suchen.
mfg
serial
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
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
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
Hallo,
Wahrscheinlich ist bei der Installation etwas krumm gelaufen, sodass die Eingabeaufforderung nicht im SDK Bin Verzecihniss "startet".
mfg
serial
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
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
@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
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
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
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.
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
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
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.
und wichtig
Hallo,
die genauere Exception müsste in der von Result gegeben Exception als InnerException vorliegen.
mfg
serial
@DeViL: ja du kannst trotzdem andere Benachrichtigen, wenn du sie im Service statisch hältst!
Schau dir doch mal das Beispiel an:
mfg
serial
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
Hallo,
ja, du solltest dir mal die Posts hier durchlesen.
Aber bedenke, EBCs sind noch in der "Forschung".
mfg
serial
@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
HAllo,
du kannst die auch mal EventBasedComponents anschauen.
mfg
serial
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
@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
Hallo,
du könntest die Formeln über das Strategymuster anwenden.
Die entsprechende Strategy wird ja nach Wert durch eine Factory erzeugt.
mfg
serial
Ok, ich dachte insgeheim, dass diese RuleEngine eigentlich mit zur BusinessSchicht gehört. Würde sie dann ja nicht mehr?!
mfg
serial
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
Genau!
Ich dachte es geht hier um zirkuläre referenzen im objektbaum, und nicht im einen referenzgleichheitsmechanismus.
mfg
serial
Hallo,
ich gehe davon aus, dass es eine unmanaged dll ist.
Dazu benötigst du PInvoke, schaue hier.
mfg
serial
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
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
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