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 Ahrimaan
Thema: DataBaseContext erstellen oder Repository per DI injizieren?
Am im Forum: Rund um die Programmierung

Hi,

da ich bisher nur mit MEF in Berührung kam, ist meien Frage nun : Woher weiß der DI Container, dass gerade das die Inmplementierung von ILogger im Constructor ein Repository braucht ?
Ich glaube cih sollte mir mal mehr die Doku von DI Frameworks anschauen ...

Danke für deine Hilfe !

Grüße

Thema: DataBaseContext erstellen oder Repository per DI injizieren?
Am im Forum: Rund um die Programmierung

Hi gfoidl,

ich hoffe ich habe nun so gehandelkt wie du es dir gedacht hast :
Das Interface wurde um eine Repository Property erweitert

    public interface ILogger:IDisposable
    {
        void Debug<T>(T source, string message) where T : class;
        void Info<T>(T source, string message) where T : class;
        void Warning<T>(T source, string message) where T : class;
        void Critical<T>(T source, string message) where T : class;
        void Critical<T>(T source, string message, Exception ex) where T : class;
        void Critical<T>(T source, Exception ex) where T : class;
        IRepository.IRepository<LogEntity> Repository { set; get; } 
    } 
Ich habe ein neues Projekt erstellt mit der LogEntity

    public class LogEntity
    {
        public LogEntity(string message,string source,DateTime logDate,string extMessage,string logLevel)
        {
            Message = message;
            Source = Source;
            ExtMessage = extMessage;
            LogDate = logDate;
            LogLevel = logLevel;
        }
        [Key]
        public int ID { get; private set; }

        [StringLength(200)]
        public string Message { get; private set; }

        [Required(AllowEmptyStrings = true)]
        [StringLength(500)]
        public string ExtMessage { get; private set; }

        [StringLength(200)]
        public string Source { get; private set; }

        [StringLength(20)]
        public string LogLevel { get; private set; }

        public DateTime LogDate { get; private set; }
    }

Unschön ist jetzt nur, dass das Repository nur eine Property ist und nicht per Constructor eingegeben wird. Ich überlege, das ILogger Interface als Abstrakte Klasse auszuführen.

Grüße

Thema: [erledigt] List<T> und Änderungen darin in Datenbank speichern
Am im Forum: Datentechnologien

Hi,

was spricht eigtl. gegen ein Repository, welches dir die Arbeit abnimmt ?
Da kannst du dann mit "klassischem" SQL arbeiten und die Daten auf objekte mappen.

Wenn du mit dem EF arbeitest, hast du den riesen Vorteil, keine eignenen Objekte mehr schreiben zu müssen.
Du kannst auch Daten an Objekte Binden und und und.

So wie gfoidl es geschrieben hat : EF und beim Eventhandler des Buttons ein Context.SaveChanges() aufrufen wird dein Problem lösen :-)

Thema: DataBaseContext erstellen oder Repository per DI injizieren?
Am im Forum: Rund um die Programmierung

Hi,

mit deiner Frage nach dem Test, hast du mir die Antwort quasi schon gegeben : Natürlich muss ich ein Repository übergeben , bei einem Context kann ich ja in der Klasse nichts mehr Mocken.

Damit erübrigt sich auch die Frage nach der Konfiguration, das Repository kann ja auch auf Dateiebene laufen.

Danke und Gruß

Thema: DataBaseContext erstellen oder Repository per DI injizieren?
Am im Forum: Rund um die Programmierung

Hallo Community,
ich wollte gerne eure Meinung zu etwas hören :

Ich habe ein Interface ILogger (zum Loggen)

public interface ILogger:IDisposable
    {
        void Debug<T>(T source, string message) where T : class;
        void Info<T>(T source, string message) where T : class;
        void Warning<T>(T source, string message) where T : class;
        void Critical<T>(T source, string message) where T : class;
        void Critical<T>(T source, string message, Exception ex) where T : class;
        void Critical<T>(T source, Exception ex) where T : class;
        string ConfigString {get; set; }
    }
Ich habe dazu eine Implementierung DatabaseLogger.

public class DataBaseLogger:ILogger.ILogger
    {
        public void Debug<T>(T source, string message) where T : class
        {
            using (var db = new DataBaseContext(ConfigString))
            {
                db.Logs.Add(new LogEntity(message,source.ToString(), DateTime.Now, string.Empty, LogLevel.Debug.ToString()));
                db.SaveChanges();
            }
        }

        public void Info<T>(T source, string message) where T : class
        {
            using (var db = new DataBaseContext(ConfigString))
            {
                db.Logs.Add(new LogEntity(message, source.ToString(), DateTime.Now, string.Empty,
                                          LogLevel.Info.ToString()));
                db.SaveChanges();
            }
        }

ILogger ist generisch gehalten , Databaselogger implementiert dieses und loggt die Nachrichten in eine Datenbank.
Ist es nun sinnvoller :

A.) dem Databaselogger das Datenbankhandling selber machen zu lassen
B.) Dem Databaselogger noch ein Repository zu übergeben ?

Bei beiden habe ich das evtl. Problem , dass ich zB. dem ILogger Interface ein Objekt oder String übergeben muss, welches je nach Anwendungsart ein Connectionstring oder ein Datepfad ist.

Gerade wenn es um DI geht stehe ich da ja nun vor einem Problem oder ?

Wie würdet Ihr das lösen ?
Grüße

Thema: Rainbird's Zyan: Interne Nutzerverwaltung, Logon, Logoff
Am im Forum: Netzwerktechnologien

Wobei dass ja unnötig wäre, bei einem Logoff Event kriegt der Server ja mit wann es passiert durch zB DateTime.Now direkt im Event.

Thema: InvalidOperationException beim Schließen des Programms
Am im Forum: GUI: Windows-Forms

Hi,

anscheinend läuft in deiner Anwendung ein Thread welcher nicht beendet ist und per Invoke noch auf etwas zugreifen möchte.

Das heißt du schließt dein Hauptfenster bevor der Thread fertig ist.

Thema: Softwareprojekte planen und verwalten: Suche passende Tools
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo zusammen,

danke für die hilfreichen Links.
Ich habe nun eine Auswahl an Systemen und schaue mir alle gründlichst an

Grüße

Thema: Softwareprojekte planen und verwalten: Suche passende Tools
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Community,

bisher wurden neue Softwareprojekte bei uns mit Excel Word und MS Project gesteuert.
Da uns das auf Dauer aber zu umständlich ist suchen wir eine VErwaltungssoftware für die Softwareplanung.

Konkret : Softwarprojekte Anlegen , Ziele Definieren , Featureliste , Projektstand und Bugtracker Wiki.

Welche Software ist dort zu empfehlen ? Gibt es da auch was von Ra.. Freeware ;-) ?

Vielen Dank für eure Hilfe

Grüße

Thema: ASP.NET MCPD fertig. Nun guter Start in SharePoint Entwicklung gesucht
Am im Forum: Smalltalk

Hallo,

erstmal Glückwunsch :-)

Frage : Warum hast du nicht gleich den Enterprise Architect gemacht ?

So zu deiner Frage : Ich kenne einen großen IT-Dienstleister, welcher Händeringend nach fähigen Sharepointentwicklern sucht. Die letzte Aussage war : Wir werden gerade mit so vielen Sharepoint Anfragen bombardiert, wir müssen 30 Mann einstellen.

Ob es so in der Branche allgemein aussieht kann ich dir nicht sagen. Die meißten scheinen Multiskiller zu suchen

Grüße

Thema: System.Net.Mail.Attachment: unterschiedliches Verhalten zwischen .Net 3.5 & 4.0?
Am im Forum: Netzwerktechnologien

Hi, nur mal sone Frage : Du hast eine Liste von Attachements.
Warum machst du dann eine neue Instanz des Attachements in die AttachementListe ?

result.Attachments.Add(new Attachment(attachment)

Lieber so

result.Attachments.Add(attachment)

Bei uns ist so ein Problem nicht aufgetreten, vll liegts ja daran ?

Grüße

Thema: MP3 Bitrate auslesen
Am im Forum: Grafik und Sound

Hi,

Bitraten kannst du einfach vom header auslesen:
Hier mal die Methode dazu:

        public bool ReadMP3Information(string FileName)
        {
            FileStream fs = new FileStream(FileName, FileMode.Open, FileAccess.Read);
            // Setze Dateinamen ohne Pfad
            strFileName = @fs.Name;
            char[] chrSeparators = new char[] { '\\', '/' };
            string[] strSeparator = strFileName.Split(chrSeparators);
            int intUpper = strSeparator.GetUpperBound(0);
            strFileName = strSeparator[intUpper];

            strFileName = strFileName.Replace("'", "''");

            // Setze Dateilänge
            lngFileSize = fs.Length;

            byte[] bytHeader = new byte[4];
            byte[] bytVBitRate = new byte[12];
            int intPos = 0;

            // Lese die ersten 4 Bits um zu prüfen ob es eine MP3 ist
            do
            {
                fs.Position = intPos;
                fs.Read(bytHeader, 0, 4);
                intPos++;
                LoadMP3Header(bytHeader);
            }
            while (!IsValidHeader() && (fs.Position != fs.Length));

            //Wenn die Streamposition = der Länge ist ist es KEINE Gültige MP3
            if (fs.Position != fs.Length)
            {
                intPos += 3;

                if (getVersionIndex() == 3)    // MPEG Version 1
                {
                    if (getModeIndex() == 3)    // Single Channel
                    {
                        intPos += 17;
                    }
                    else
                    {
                        intPos += 32;
                    }
                }
                else                        // MPEG Version 2.0 or 2.5
                {
                    if (getModeIndex() == 3)    // Single Channel
                    {
                        intPos += 9;
                    }
                    else
                    {
                        intPos += 17;
                    }
                }

                // Pürfe ob die Datei eine Variable Bitrate hat
                fs.Position = intPos;
                fs.Read(bytVBitRate, 0, 12);
                boolVBitRate = LoadVBRHeader(bytVBitRate);

                // Wenn die Datei gelesen wurde übergib die daten an die Public Variablen
                intBitRate = getBitrate();
                intFrequency = getFrequency();
                strMode = getMode();
                intLength = getLengthInSeconds();
                strLengthFormatted = getFormattedLength();
                fs.Close();
                return true;
            }
            return false;
        }

        private void LoadMP3Header(byte[] c)
        {
            // c[0] = 00000011
            // c[1] = 00001100
            // c[2] = 00110000
            // c[3] = 11000000
            // Dieser Operator << bedeutet Das wir die Bits in diese Richtung schieben
            // 00000011 << 24 = 00000011000000000000000000000000
            // 00001100 << 16 =         000011000000000000000000
            // 00110000 << 24 =                 0011000000000000
            // 11000000       =                         11000000
            //                +_________________________________
            //                  00000011000011000011000011000000
            bithdr = (ulong)(((c[0] & 255) << 24) | ((c[1] & 255) << 16) | ((c[2] & 255) << 8) | ((c[3] & 255)));
        }

        private bool LoadVBRHeader(byte[] inputheader)
        {
            //Bei einer Variablen Bitrate wird XING ausgegeben
            if (inputheader[0] == 88 && inputheader[1] == 105 &&
                inputheader[2] == 110 && inputheader[3] == 103)
            {
                int flags = (int)(((inputheader[4] & 255) << 24) | ((inputheader[5] & 255) << 16) | ((inputheader[6] & 255) << 8) | ((inputheader[7] & 255)));
                if ((flags & 0x0001) == 1)
                {
                    intVFrames = (int)(((inputheader[8] & 255) << 24) | ((inputheader[9] & 255) << 16) | ((inputheader[10] & 255) << 8) | ((inputheader[11] & 255)));
                    return true;
                }
                else
                {
                    intVFrames = -1;
                    return true;
                }
            }
            return false;
        }

        private bool IsValidHeader()
        {
            return (((getFrameSync() & 2047) == 2047) &&
                    ((getVersionIndex() & 3) != 1) &&
                    ((getLayerIndex() & 3) != 0) &&
                    ((getBitrateIndex() & 15) != 0) &&
                    ((getBitrateIndex() & 15) != 15) &&
                    ((getFrequencyIndex() & 3) != 3) &&
                    ((getEmphasisIndex() & 3) != 2));
        }

        private int getFrameSync()
        {
            return (int)((bithdr >> 21) & 2047);
        }

        private int getVersionIndex()
        {
            return (int)((bithdr >> 19) & 3);
        }

        private int getLayerIndex()
        {
            return (int)((bithdr >> 17) & 3);
        }

        private int getProtectionBit()
        {
            return (int)((bithdr >> 16) & 1);
        }

        private int getBitrateIndex()
        {
            return (int)((bithdr >> 12) & 15);
        }

        private int getFrequencyIndex()
        {
            return (int)((bithdr >> 10) & 3);
        }

        private int getPaddingBit()
        {
            return (int)((bithdr >> 9) & 1);
        }

        private int getPrivateBit()
        {
            return (int)((bithdr >> 8) & 1);
        }

        private int getModeIndex()
        {
            return (int)((bithdr >> 6) & 3);
        }

        private int getModeExtIndex()
        {
            return (int)((bithdr >> 4) & 3);
        }

        private int getCoprightBit()
        {
            return (int)((bithdr >> 3) & 1);
        }

        private int getOrginalBit()
        {
            return (int)((bithdr >> 2) & 1);
        }

        private int getEmphasisIndex()
        {
            return (int)(bithdr & 3);
        }

        private double getVersion()
        {
            double[] table = { 2.5, 0.0, 2.0, 1.0 };
            return table[getVersionIndex()];
        }

        private int getLayer()
        {
            return (int)(4 - getLayerIndex());
        }

        private int getBitrate()
        {
            // Bei Variabler Bitrate wird ein Mittelwert gebildet
            if (boolVBitRate)
            {
                double medFrameSize = (double)lngFileSize / (double)getNumberOfFrames();
                return (int)((medFrameSize * (double)getFrequency()) / (1000.0 * ((getLayerIndex() == 3) ? 12.0 : 144.0)));
            }
            else
            {
                int[, ,] table =        {
                                { // MPEG 2 & 2.5
                                    {0,  8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160,0}, // Layer III
                                    {0,  8, 16, 24, 32, 40, 48, 56, 64, 80, 96,112,128,144,160,0}, // Layer II
                                    {0, 32, 48, 56, 64, 80, 96,112,128,144,160,176,192,224,256,0}  // Layer I
                                },
                                { // MPEG 1
                                    {0, 32, 40, 48, 56, 64, 80, 96,112,128,160,192,224,256,320,0}, // Layer III
                                    {0, 32, 48, 56, 64, 80, 96,112,128,160,192,224,256,320,384,0}, // Layer II
                                    {0, 32, 64, 96,128,160,192,224,256,288,320,352,384,416,448,0}  // Layer I
                                }
                                };

                return table[getVersionIndex() & 1, getLayerIndex() - 1, getBitrateIndex()];
            }
        }

        private int getFrequency()
        {
            int[,] table =    {    
                            {32000, 16000,  8000}, // MPEG 2.5
                            {    0,     0,     0}, // reserved
                            {22050, 24000, 16000}, // MPEG 2
                            {44100, 48000, 32000}  // MPEG 1
                        };

            return table[getVersionIndex(), getFrequencyIndex()];
        }

        private string getMode()
        {
            switch (getModeIndex())
            {
                default:
                    return "Stereo";
                case 1:
                    return "Joint Stereo";
                case 2:
                    return "Dual Channel";
                case 3:
                    return "Single Channel";
            }
        }

        private int getLengthInSeconds()
        {
            // "intKilBitFileSize" geteilt durch 1000 damit die Formel stimmt "Kilobits/second"
            int intKiloBitFileSize = (int)((8 * lngFileSize) / 1000);
            return (int)(intKiloBitFileSize / getBitrate());
        }

        private string getFormattedLength()
        {
            // Komplette Sekunden
            int s = getLengthInSeconds();

            // Sekunden formatiert
            int ss = s % 60;

            // Komplette Minuten
            int m = (s - ss) / 60;

            // Formatierte Minuten
            int mm = m % 60;

            // Komplette Stunden
            int h = (m - mm) / 60;

            // mach "hh:mm:ss"
            return h.ToString("D2") + ":" + mm.ToString("D2") + ":" + ss.ToString("D2");
        }

        private int getNumberOfFrames()
        {
            // Die Anzahl der MPGFrames ist abhängig obs eine Variable Bitrate oder eine feste ist
            if (!boolVBitRate)
            {
                double medFrameSize = (double)(((getLayerIndex() == 3) ? 12 : 144) * ((1000.0 * (float)getBitrate()) / (float)getFrequency()));
                return (int)(lngFileSize / medFrameSize);
            }
            else
                return intVFrames;
        }
    }

Thema: Programmierung Outlook ähnlicher Erinnerungsfunktion
Am im Forum: Rund um die Programmierung

Hi,
was dir sicher bei deinem Vorhaben noch hilft ist dieses super Projekt :
http://quartznet.sourceforge.net/

Thema: MEF: Importieren mehrerer unterschiedlicher Interfaces
Am im Forum: Rund um die Programmierung

Hi,

genau das meine ich, ich habe mehrer Methoden mit LoadRepos usw.

Das bedeutet ich mach den ComposingBatch in der Klasse verfügbar und der Rest soll so bleiben ?

Grüße

Thema: MEF: Importieren mehrerer unterschiedlicher Interfaces
Am im Forum: Rund um die Programmierung

Hallo,

ich bin beim Debugen grad auf was gestoßen was ich mir nicht erklären kann :


[ImportMany(typeof(IModule.IModule),AllowRecomposition = true)]
    private IModule.IModule[] _modules;

    [ImportMany(typeof (IGenericRepository.IRepository))] 
    private IGenericRepository.IRepository[] _repos;

    [ImportMany(typeof (IFileSearcher.IFileSearcher))]
    private IFileSearcher.IFileSearcher[] _fileSearcher;

    [ImportMany(typeof(IFileUploader.IFileUploader))]
    private IFileUploader.IFileUploader[] _fileUploader;
Für jedes Interfaces rufe ich eine Private Methode auf z.B.


private void LoadModuleExtensions()
    {
      var dirCatalogModules = new DirectoryCatalog("Modules");
      var container = new CompositionContainer(dirCatalogModules);
      CompositionBatch compBatch = new CompositionBatch();
      compBatch.AddPart(this);
      compBatch.AddPart(dirCatalogModules);
      container.Compose(compBatch);
    }
Bei meinen Modulen ist das Array nach der ersten Methode gefüllt, sobald er aber danach eine Methode zum Füllen der FileUploader ausführt, sind meine Module wieder leer Oo.

Habe ich was übersehen ?



Grüße

Thema: Repository Pattern : Übergabe der Interfaces
Am im Forum: Rund um die Programmierung

Hallo NeuroCoder,

genau das zweite Beispiel habe ich gesucht :-)

Danke !

Thema: Repository Pattern : Übergabe der Interfaces
Am im Forum: Rund um die Programmierung

Hallo,

mein generisches Repository hat ein Interface

public interface IRepository<TEntity> : IDisposable where TEntity : class
Für MEF habe ich nun ein Interface IModule

public interface IModule
  {
    void StartModule(IModuleConfiguration.IModuleConfiguration config,IFileSearcher.IFileSearcher reader,IFileUploader.IFileUploader[] uploader);
    string ConfigurationName { get; }
    event EventHandler<OnStartEventArgs> OnModuleStarted;
    event EventHandler<OnErrorEventArgs> OnModuleError;
    event EventHandler<OnEndEventArgs> OnModuleEnd;
    event EventHandler<OnMessageEventArgs> OnMessageRecieved;
  }
So nun mein Problem : Ich möchte der Methode StartModule ein generisches Repository übergeben.

Da das Interface als Vorlage dient weiß ich noch nicht welche Klasse den Platzhalter einnimmt.

Gibt es dafür eine Lösung ?



Grüße

Thema: WinApi GetWindowRect auf Multimonitorsystem
Am im Forum: Rund um die Programmierung

Hi MarsStein,

der Prozess ist bereits vorhanden, ich starte diesen also nicht selbst.
Das Struct wird auch mit Leben gefüllt bzw. die Funktion liefert True zurück.

Zwar mit Werten wie :

Bottom : 1305
Left : 3352
Right : 4418
Top : -329

Ich fürchte fast es liegt an den Drei Monitoren : Ich muss also die Position umrechnen evtl.

Grüße

EDIT : Multiple Monitor System Metrics

Siehe da , aus Kompatibilitätsgründen wird nur der Primary Monitor angesprochen.

Thema: WinApi GetWindowRect auf Multimonitorsystem
Am im Forum: Rund um die Programmierung

Hi MarsStein,

ich habe es auch mal mit dem MainWindowHandle probiert (Auch mal mit Outlook etc.)
Irgendwie will es aber trotzdem nicht.
Das Ding landet immer auf dem hauptscreen oben links
Ich habe auch schon nachgeschaut ob ich das irgendwo setzte aber Pustekuchen....

Ich suche einfach mal weiter vll fällt mir ja was auf.

Grüße

Thema: WinApi GetWindowRect auf Multimonitorsystem
Am im Forum: Rund um die Programmierung

allo,



mein programm soll sich über ein anderes Programm "legen"

Dazu habe ich folgende Funktion :


if (process.ProcessName == "CtiClient")
  {
   RECT windowPos = new RECT();
   GetWindowRect(new HandleRef(this,process.Handle), out windowPos);
   this.StartPosition = FormStartPosition.Manual;
   this.SetDesktopLocation(windowPos.Left,windowPos.Top);
  }
[DllImport("user32.dll")]
 [return: MarshalAs(UnmanagedType.Bool)]
 static extern bool GetWindowRect(HandleRef hWnd, out RECT lpRect);

[StructLayout(LayoutKind.Sequential)]
        public struct RECT
        {
            public int Left;        // x position of upper-left corner
            public int Top;         // y position of upper-left corner
            public int Right;       // x position of lower-right corner
            public int Bottom;      // y position of lower-right corner
        }


Da ich es zur Zeit nur an einer Maschine mit 3 Monitoren testen kann, habe ich den verdacht das es damit nicht so klappt.

Er zeigt mir Koordinaten an aber wenn ich darauf die Position setzte landet das Ding im Nirvana.

Mache ich was falsch ?



Grüße

Thema: Fremde .NET Anwendung steuern
Am im Forum: Rund um die Programmierung

Hi,

ich wärme das ganze hier mal auf :

Wie soll ich denn einen laufenden Prozess der ne eigene AppDomain hat in meine Domain ziehen ?

Grüße

Thema: MySql und ADO.NET
Am im Forum: Datentechnologien

Schonmal probiert über das EF mit dem Connector zu arbeiten und zu gucken obs evtl. woanders dran liegt ?

Thema: HasMany und WithMany (1:n und m:n in EntityFramework Code First)
Am im Forum: Datentechnologien

Hallo,

wie in der PN beschrieben musst du deinem Model nur eine virtual ICollection<DeinTYp> mit angeben.

Wichtig MARS muss im ConnectionString angegeben werden

Thema: Entity Framework und Dependency Injection
Am im Forum: Datentechnologien

Ich beantworte mir die Frage mal selbst :

http://snipplr.com/view/27617/irepository-using-lambda-expressions/

http://www.questionhub.com/StackOverflow/4074201

http://blog.wekeroad.com/2008/04/10/mvcstore-part-3

http://www.jacopretorius.net/2009/07/repository-pattern-are-we-using-it.html

Grüße

Thema: Entity Framework und Dependency Injection
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: MSSQL2005

Hallo zusammen,

Eine Libary braucht zugriff auf eine Datenbank bzw. ein Repository.
Dieses übergebe ich per Interface an die Klasse.

Meine Frage nun : Wie muss ich mein Repository aufbauen welches ich übergebe ?
Soll ich die Daten aus dem EntityFramework auf ViewModel Daten Mappen und dann dem Repository übergeben ?
Oder soll das Repo einen Datenbankkontext erhalten ?

Wie regelt Ihr das ?

Gibt es evtl. konkrete Implementierungsbeispiele ?

Danke und Gruß

Thema: Linq: Include Performance-Frage
Am im Forum: Datentechnologien

Vll hilft dir das auch etwas bei der Performance (Lazy Loading)
Klick Mich

Grüße

Thema: [erledigt]EF 4 Code First : Problem mit Collections von Fremdtabellen
Am im Forum: Datentechnologien

So Erledigt :

MARS war nicht aktiviert im Connection String

Thema: [erledigt]EF 4 Code First : Problem mit Collections von Fremdtabellen
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: MSSQL 2005

Hallo zusammen,

kleines Problem mit Code First :

Erstmal meine Models :

public class RealmModel
 {
  [System.ComponentModel.DataAnnotations.Key]
  public int Id { get; private set; }
  public string Name { get; private set; }
  public int HeaderRow { get{ return _headerRow - 1;} set{ _headerRow = value;} }
  private int _headerRow;
  public int StartRow { get { return _startRow - 1; } set { _startRow = value; } }
  private int _startRow;
  public int EndRow { get { return _endRow - 1; } set { _endRow = value; } }
  private int _endRow;
  public virtual System.Collections.Generic.ICollection<RuleModel> Rules { get; set; }
 }

public class RuleModel
 {
  [System.ComponentModel.DataAnnotations.Key]
  public int Id { get; private set; }
  public string ColumnText { get; set; }
  public string RuleValue { get; set; }
  public virtual RealmModel Model { get; set; }
 }

Und hier die Initalisierung der Datenbank

class DatabaseCatalog : DbContext
 {
  public DatabaseCatalog()
   : base(new ConnectionStringConfiguration().ConnectionString)
  {
   System.Data.Entity.Infrastructure.Database.SetInitializer<DatabaseCatalog>(null);
   this.Database.CreateIfNotExists();
   
  }
  public DbSet<RealmModel> Realms { get; set; }
  public DbSet<RuleModel> Rules { get; set;}
 }

 public class ConnectionStringConfiguration : ConfigurationSection
 {
  [ConfigurationProperty("ConnectionString", IsRequired = false, DefaultValue = @"Data Source=172.27.0.35;Initial Catalog=eScanner;User Id=xx;Password=xxx;")]
  public string ConnectionString { get { return (string)this["ConnectionString"]; } }
 }

Problem : Sobald ich die Collection im RealmModel aufrufen will kriege ich folgenden Fehler :


{"Diesem Command ist bereits ein geöffneter DataReader zugeordnet, der zuerst geschlossen werden muss."}

Ich frage mich nun ernsthaft warum ?

Thema: [Erledigt] Excel 2007 XML : Leseproblem
Am im Forum: Datentechnologien

Soo anch langem forschen nun rausgefunden :

der XELementname ist der Namespace + Element !

{http://schemas.openxmlformats.org/officeDocument/2006/relationships}id

Grüße

Thema: [Erledigt] Excel 2007 XML : Leseproblem
Am im Forum: Datentechnologien

Hi,

mir ist durchaus bewusst das es ein steiniger Weg ist aber mit der schnellste.
Implementierungen von Open XML zB ClosedXML bei Codeplex sind aber stinkend langsam bei vielen Daten. Und das liegt zu 80 % an der SDK .
Deswegen der weg zu Fuß.

Mein Problem sind nicht die Daten zu den shared Strings zu zu ordnen, mir geht es darum das eigtl. eindeutige Elemente nicht als solche erkannt werden.

Vll . hat jmd noch ne Idee ?

Grüße