Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

Wie kann man direkt einen SQL-Befehl mit Entitiy Framework auf dem SQL Server ausführen.

17.05.2018 (👁4909)


Problem:

Unter Verwendung des Entity Framework in Asp.Net Core werden die Daten immer erst in das Datenmodel geholt, geändert und dann per Update auf dem SQL Server gespeichert.

Dabei wirkt das EF Datenmodel wie eine ADO Tabellen-Zwischenspeicher. Leider kommt es bei Zeitkritischen Vorgängen leicht zu einem Datenkonflikt, da die Serverdaten zwischenzeitlich geändert werden.

Einfache Vorgänge wie das erhöhen eines Zählers oder ein reines speichern kann deshalb auch rein auf dem SQL-Server ausgeführt werden, indem man nur den SQL-Transact Befehl an den SQL Server sendet.

    public static void counter_of_View_erhoehen(long IDUser, long IDNote = 0)

    {

        //-------------< logViewCounter_erhoehen() >-------------

        //< Sum ViewLogs >

        string sSQL = "UPDATE[dbo].[tbl_Notes]  SET[sumViews] = ISNULL([sumViews], 0)+1  WHERE [IDNote]=" + IDNote;

        EF_Model.dbContext.Database.ExecuteSqlCommand(sSQL);

        //-------------</ logViewCounter_erhoehen() >-------------

    }

Schneller Vorgang über EF Execute

EF, Entitiy Framework,

Asp.Net core 2

 

Eine Einfache SQL Server Execute Anweisung unte EF in Asp.Net Core

Ablauf über Entity Framework Daten-Modell

EF, Ado-Tabellen

Bei Verwenden des gesicherten Arbeitens mit Entitiy Framework werden die Daten oder der einzelne Datensatz kurz abgeholt,

dann Sicher bearbeitet mit allen Vorteilen von C# und SQL Injection sicher, und final wieder mit dem Update Befehl die geänderten Daten zum Server hochgeladen

EF arbeitet intern mit dem früheren ADO

Ausführen einer einfachen SQL Update Anweisung unter Entitiy Framework mit Database Context

    public static int counter_of_View_erhoehen(long IDUser, long IDNote = 0)

    {

        //-------------< logViewCounter_erhoehen() >-------------

        //< Sum ViewLogs >

        NoteModel note = EF_Model.dbContext.tbl_Notes.SingleOrDefault(m => m.IDNote == IDNote);

        if (note == null) return 0;

        if (note.sumViews == null) note.sumViews = 0;

        note.sumViews += 1;

        EF_Model.dbContext.SaveChanges(true);

        //</ Sum ViewLogs >

        return Convert_Methods.IntNull_to_Int( note.sumViews);

        //-------------</ logViewCounter_erhoehen() >-------------

    }