Hmm,
schwer zu sagen...*Du bekommst einen connect (sicher?) ? *Was macht Deine SP genau? Kannst Du diese im Query Analyzer problemlos ausführen? *Womöglich dauert die Ausführung wirklich zu lange?
Poste doch mal die SP und checke die SP im query analyzer...
Moin,
Du solltest dann eine eigene Implementation von ICertificatePolicy erstellen...
Beispiel:
public class AcceptAllCertificatePolicy : ICertificatePolicy
{
public AcceptAllCertificatePolicy()
{
// Brauchen wir nicht.
}
public bool CheckValidationResult(ServicePoint srvPoint,
X509Certificate certificate, WebRequest request,
int certificateProblem)
{
// Damit wir hier weiterkommen, einfach durchleiten...
return true;
}
}
Client Seite:
ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();
try
{
WebRequest myRequest = WebRequest.Create(myUri);
WebResponse myResponse = myRequest.GetResponse();
ProcessResponse(myResponse);
myResponse.Close();
}
// Catch
catch(WebException e)
{
if (e.Status == WebExceptionStatus.TrustFailure)
{
// Deine Prüfung kommt dann hier.
}
// Andere exceptions
}
Der Unterschiede
Offline Application Block kann:
Ich würde den Block eher als Architektur beschreiben, Deim RMO eher als ein Modell.
Mann könnte RMO sozusagen wieder in den Offline Application Block nutzen.
Du erhälst durch die Nutzung des Blocks Gewissheit, dass das was dort steht, auch funktioniert.
Du brauchst Dich nicht mehr mit dingen wie "Netzwerkstatus", "Caching" und dem GESAMTEN syncro Vorgang kümmern. Alles ist sauber in einem Framework auf hohem Niveau implementiert.
using nutzt Du bei allen Klassen, die IDisposable implementieren.
Du erreichst damit, dass die Instanz automatisch für den GC freigegeben wird, wenn die Arbeit beendet oder und das ist noch schöner, ein Fehler aufgetreten ist.
Du sparst Dir somit zum Beispiel das Aufrufen von Close().
Mein Tip: Nutze IMMER using wenn IDisposable implementiert ist!
Das was Du suchst würde ich als typischen Offline Smart Client bezeichnen.
Gott sei dank gibt es das Offline Application Block:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/offline.asp
Dieses Block nimmt dir die gesamte Arbeit ab, was das syncronisieren von Daten angeht, einfach nur zu empfehlen. Wird dir Spass machen 🙂
BTW: Welche Datenbank du nutzt, ist hierbei völlig unwichtig...
Solange man seine Geschäftslogik grausamerweise in die Präsentationsschicht steckt, ja 🙂
Halt,
so nicht 😉
DO ünterstützt kein Object Binding von .NET 2.0
Du musst den BindingManager nutzen und die entsprechenden Properties an das Control und an die entsprechende Eigenschaft binden (z.B. Text).
Du findest in den Samples ein Beispiel... Also nicht .NET 2.0 ObjectDataSource mit DO Binding verwechseln. Allerdings sind die x-tensive Jungs am schauen ob sie nicht die neuen Binding Möglichkeiten von .NET 2.0 einpflanzen können.
Die Idee des Binding Managers kam noch von 1.1 Zeiten in denen es kein 2-Way-DataBinding für Controls gab (ASP.NET)-
Hallo,
ich arbeite seit 2 Jahren mit DO und kann nur positives Berichten.
Zu Deiner konkreten Frage:
Der BindingManager ermöglicht Dir das Binden von **persistent types **an Controls.
Das besondere: Unter ASP.NET erhälst Du 2-Way-DataBiniding.
Beispiel:
Du hast eine Klasse "Person".
Eine Eigenschaft einer Instanz hiervon kannst Du nun problemlos z.B. an eine TextBox binden (z.B. Vorname etc).
Gibst Du dem Benutzer die Möglichkeit, Änderungen vorzunehmen, rufst Du nach dem Edit-Vorgang Update() auf und Deine Instanz wird transparant persistiert.
Falls Du weitere Fragen hast stehe ich Dir gerne zur Verfügung. In jedem Fall lohnt sich ein tiefer Blick in das DO Framework.
Moin,
using System.Net;
using System;
namespace Examples.System.Net.Cookies
{
// This example is run at the command line.
// Specify one argument: the name of the host to
// send the request to.
// If the request is sucessful, the example displays the contents of the cookies
// returned by the host.
public class CookieExample
{
public static void Main(string[] args)
{
if (args == null || args.Length != 1)
{
Console.WriteLine("Specify the URL to receive the request.");
Environment.Exit(1);
}
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(args[0]);
request.CookieContainer = new CookieContainer();
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
// Print the properties of each cookie.
foreach (Cookie cook in response.Cookies)
{
Console.WriteLine("Cookie:");
Console.WriteLine("{0} = {1}", cook.Name, cook.Value);
Console.WriteLine("Domain: {0}", cook.Domain);
Console.WriteLine("Path: {0}", cook.Path);
Console.WriteLine("Port: {0}", cook.Port);
Console.WriteLine("Secure: {0}", cook.Secure);
Console.WriteLine("When issued: {0}", cook.TimeStamp);
Console.WriteLine("Expires: {0} (expired? {1})",
cook.Expires, cook.Expired);
Console.WriteLine("Don't save: {0}", cook.Discard);
Console.WriteLine("Comment: {0}", cook.Comment);
Console.WriteLine("Uri for comments: {0}", cook.CommentUri);
Console.WriteLine("Version: RFC {0}" , cook.Version == 1 ? "2109" : "2965");
// Show the string representation of the cookie.
Console.WriteLine ("String: {0}", cook.ToString());
}
}
}
}
Moin,
Du meinst also erst nach dem PostBack?
Was heißt "nicht genau die Werte" ?
Moin,
in dem Du die entsprechende Assembly in Dein Projekt einbeziehst.
Moin,
dirty WorkAround:
Setzte das Grid in ein Panel, Dock des Grids auf Fill, AutoScroll des Panels auf true...
Achso, jetzt verstehe was Du meinst.
Du brauchst einen Managed Datentyp, z.B.
[DllImport("c_language.dll", EntryPoint="my_C_function")]
public unsafe static extern RetvalFlag myImportedCFunction(double x, int
y, CalcFlag iflag, double* ptrD, StringBuilder sberr);
private StringBuilder sberr = new StringBuilder("empty string", 2*256);
Moin,
warum nicht einfach einfach:
Du hast ein Feld in Deiner Tabelle, z.B. "VotingCount" (int).
Dieses Feld hat als Default 0.
Beim Abgeben eines Votes erhöhst Du das Feld um 1.
Beim Auslesen sortierst Du einfach nach "VotingCount".
Beim Anlegen eines Votes inkrementierst Du wie gesagt Deinen Wert:
VotingCount++;
Das Aufsummieren etc. ist dann alles nicht mehr nötig, performanter sollte diese Lösung nebenbei auch noch sein...
Moin,
der StackTrace sollte Dir helfen...
Weiterhin der SQL Profiler...
Moin,
diese Library sollte Dir helfen:
Ansonsten schau Dir den Namespace System.IO an, dort findest Du die Klassen, die Du zum schreiben, löschen etc. brauchst.
Moin,
ein string ist kein **char **...
Wenn Du char erwartest musst Du auch einen char übergeben...
eine ReadOnly TextBox ohne Rand und Hintergrundfarbe 😉
Stimmt, wenn er sie natürlich durch "markieren" auswählen will geht ne TextBox.
Allerdings ist die ListView denke ich das "bessere" Control wenn es um Datenbindung von Listen geht...
Original von Waschbecken
b) Du schmeißt deine Klassen in den Folder App_Code im Root - nur dann sind deine Sachen global in der Page verfügbar!
Da war doch was ,-)
Da er die Items markieren will etc. ist eine TextBox keine wirklich gute Idee...
Du programmierst Deine Klasse gegen das Interface und implementierst die Methoden.
Wenn Du das ganze eine Liste Binde willst erzeugst Du entweder eine weitere Klasse die IEnumerable implementiert oder du gibst einfach eine ArrayList aus der Methode GetAllItems() oder ähnliches zurück.
Hmm, Deine Datenansicht scheint interessant zu sein, wenn Du Strukturen hast, die keinen Parent haben 😉 Du musst natürlich schon von oben nach unten laden. Weiterhin kannst Du auch z.B. nur immer 1000 root-Datensätze inkl. Hirarchie - Datensätze (meeeehr als genug) laden. Eben einen Virtual Mode nachbauen.
Ich würde trotzdem LoadOnDemand bei Ausklappen starten, jedenfalls bei dieser Datenmenge!
Die Struktur eines DataSets erstellt Du OHNE Inhalt 🙂 Nach Deiner Theorie könnte man keine Tabellen anlegen ohne Daten zu haben 😉
Wie Du dann die Tabellen füllst ist der zweite Schritt. Und genau hier kannst Du mir LoadOnDemand arbeiten...
Du kannst einem leeren DataSet genauso Relationen wie einem gefüllten zuweisen. Mit Daten haben Relationen wohl nix zu tun, Du beschreibst im DataSet ja nur Deine Struktur. Du kannst also problemlos ein LoadOnDemand für bestimmte Daten implementieren.
welche referenz?
dann kannst du ja mal die nun funktionierende assembly einbinden und weiter testen
oha, da ist wohl was bei der installation oder im GAC schief gegangen ...
irgendwelche referenzen auf system.data gesetzt? welche vs studio version nutzt du ?
Dann hast du höchstwahrscheinlich einen Fehler in der Klasse auf die Du zugreifen willst.
Zum Testen schmeisse die Klasse einfach mal in eine eigene Assembly und schau ob sie kompiliert.
Womöglich hast Du einfach Fehler in Deiner DBSystem Klasse und der kompiler erstellt diese dann auch nicht.
Funktioniert denn Intellisense innerhalb Deiner Klasse BaseSystem?
Zwei Möglichkeiten:
a) Nutze ein Third-Party Grid welches "Virtual Mode" unterstützt (http://www.infragistics.com)
b) Erstelle eine Art Paging oder noch besser stelle Dir die Frage wer sich 110000 Einträge gleichzeitig anschauen kann. Das macht einfach keinen Sinn. Du musst die Datensätze nachladen.
Übrigens: Dein Reduzieren der RAM Zuweisung führt zu swapping. Gerade in Deinem Beispiel sehr gefährlich, denn DataSet -> lebt von RAM. Also lasse das mal lieber das Framework verwalten.
Poste bitte mal die komplette Aufteilung Deiner Namespaces und ein bisschen Code (inkl. using Direktiven)
Moin,
genau, ListView und dann das hier anschauen:
http://www.codeproject.com/cs/miscctrl/ListViewContextMenu.asp
Moin,
Dein using ist nichts weiter als ein Hilfsmittel um schneller auf die Klassen in einem Namespace zu kommen (reine Tipparbeit).
Wenn Du Deine Assembly kompiliert hast musst Du sie noch einbinden (Add Reference).
Ansonsten hast Du vielleicht nur als private deklarierte Klassen und und / oder Methoden?
Ok,
dann bitte testen:
SqlConnection con = new SqlConnection( "Server=DeinRechnerName\SqlExpress;Database=master;Trusted_Connection=True;" );
SqlConnection con = new SqlConnection( "Server=(local)\SqlExpress;Database=master;Trusted_Connection=True;" );
Jep 😉
Nutze dafür das, was es dafür gibt:
Nach erfolgreicher Prüfung des Passwortes:
FormsAuthentication.SetAuthCookie("DeinUserName", false);
bool IsDerUeberhauptAngemeldet = Context.User.Identity.IsAuthenticated;
if (IsDerUeberhauptAngemeldet)
string UserName = Context.User.Identity.Name;
Schau mal im Configuration Manager ob Du Named Pipes zulässt:
Original von MasterOfCoding
Soll ich für eine Zeile eine Klasse (oder doch lieber ein struct) erzeugen
Nicht für eine Zeile 😉 Was Du hier beschreibst ist ein Objekt einer Klasse.
Du kannst natürlich Deine Klasse entwerfen, Save(), LoadByID(), LoadList() oder ähnliches implementieren.
Wenn Du es "richtig" sauber haben willst programmmierst Du gegen eine Schnittstelle und kannst so das Zeugs wegspeichern wie Du willst, solange Save() usw. sauber implementiert wird.
Ob Du dann in eine Datenbank, XM Datei, TextFile, Excel Tabelle usw. speicherst ist Dir als Entwickler beim programmieren der Geschäftslogik dann einfach nur egal 😉 contract first 😉
Habe ich mich auch grade gefragt 😉
Moin,
nutze für den Insert Parameter und erzeuge das Datum mit:
DateTime.Parse("2005-08-01");
Moin,
wenn es unbedingt aus der ASP.NET Anwendung sein muss:
Starte eine Thread beim Starten der Applikation, erzeuge eine TimeSpan für die gewünschte Dauer und versetzte ihn für diese Dauer in Tiefschlaf...
Genau,
wie FZelle schon sagte localhost\SqlExpress und natürlich zunächst die Rechte im Server überprüfen.
Ich frage mich nur grade ob es sinnvoll ist ein Passwort in einer Session durch die Gegend zu tragen?!
Moin!
Schau mal hier , für den Einstieg sehr zu empfehlen:
Nein, einfach "alles rein" heißt natürlich nicht ohne Paramter zu arbeiten sondern das er sich um die Formatierung keine Sorgen machen muss!! Natürlich IMMER Parameter.