דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
S

softs

@softs
אודות
פוסטים
271
נושאים
9
קבוצות
0
עוקבים
0
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • Json
    S softs

    מורידים מה nuget את json.net
    יוצרים struct במבנה של ה json ועושים jsonconvert.deserialize לתוך המשתנה

    פורסם במקור בפורום CODE613 ב12/07/2016 11:02 (+03:00)


  • C# פונקציה לטיפול ב enum המוגדר כ flags ?
    S softs

    שימוש קלאסי ב Flags הוא במקרה של צורך בהעברת אוסף של הגדרות True\False שלא תלויות זו בזו לפונקציה מסוימת
    כמו ב MessageBox לדוגמה, מה יהיה האייקון והאם ייושר לימין וכו', זה קריא, פשוט וחסכוני.
    ל Enum שלא מוגדר כ Flags יש עוד שימושים כמו הגבלת קלט לפונקציה.

    הגישה של למה להסתבך ממש מעצבנת אותי, מתכנת צריך לשאוף להכיר כל אבן מאבני הבנין של התכנות על בוריה, ואחר כך מתוך עמדה של ידע להחליט במה להשתמש ובמה לא.

    פורסם במקור בפורום CODE613 ב05/07/2016 11:55 (+03:00)


  • אופטימיזציה ב-vb6
    S softs

    @mat

    תעביר אותה ל web.

    בדקתי, האחד באפריל היה שבוע שעבר, אני מציע שתכניס לחתימה שלך גילוי נאות שאתה חבר בכת ההיא, אנשים עלולים לקחת את התשובות שלך כעצות אובייקטיביות.

    עכשיו ברצינות, MAT מתכוון כנראה למעלה של WEB שהוא מעביר חלק מהעיבוד לצד הלקוח וכך חוסך במשאבים.
    מצד שני זוהי לא תשובה לשאלה ששאלת ואף תשובה שאיננה נכונה בהמון סיטואציות כמו תוכנות ללא ממשק משתמש או שמשתמשות ב API ישנים, ועוד.

    התשובה לשאלתך היא כן.

    פורסם במקור בפורום CODE613 ב03/04/2016 14:55 (+03:00)


  • נעילת תהליך ב SQL SERVER
    S softs

    אחרי שעשו לי פה שיימינג ....
    אין לי את הזמן להכין פה קורס בנושא וזה לא תחום שניתן ללמד אותו על קצה המזלג, עשיתי פעם קורס מקיף בנושא שכבר המלצתי עליו כאן.
    החלק הרלוונטי ממנו:
    https://lagunita.stanford.edu/courses/DB/Indexes/SelfPaced/courseware/ch-indexes
    כל הקורס מאוד מומלץ (מחולק למיני קורסים) שזה כאן:
    https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about
    ממליץ לראות את הסרטונים בסבלנות, לעשות את הבוחן בכל שלב ובכללי ללכת ללפי הקו שלהם ולא לדלג.
    אחרי שהשואלים יואילו ללמוד את הקורס הקצר הזה, אני יואיל לענות בנושא מעל דפי הפורום.

    לאדוקים במיוחד: המרצה היא אישה והראש שלה מופיע בסרטונים בריבוע בצד ימין למטה.

    פורסם במקור בפורום CODE613 ב03/04/2016 13:18 (+03:00)


  • גישה לדומיין אחר JS
    S softs

    כבר דנו בזה בעבר פה - חפש cors בפורום

    הטעות שלך היא שאתה צריך להחזיר את הheader הזה מהשרת ולא לשלוח אותו, לזה שאתה שולח אותו אין שום משמעות.

    התורה על רגל אחת:
    כשאתה שולח בקשה מהקוד שלך לכתובת שאינה הכתובת של הדף כלומר איננה שייכת לך, הדפדפן מוודא שהבעלים של התוכן ההוא מאשר לך להציג את התוכן שלו אצלך.
    בשביל לשאול אותו את זה הדפדפן שולח קודם בקשת http ב method שנקרא options ומקבל מהשרת תשובה האם ואיפה להרשות את תצוגת התוכן, אם השרת לא החזיר header כזה בכלל זה אומר שהוא לא מרשה לאף אחד, וממילא הדפדפן חוסם את הקריאה, אם החזיר עם כוכבית אז הוא מרשה לכולם ואפשר כמובן לאפשר כתובת ספציפית עם ובלי wildcards.
    אם אתה בעל השרת אתה צריך לגרום לשרת שלך להחזיר את ה header עם התשובה המתאימה ואיך לבצע את זה כבר תלוי בפלטפורמה של השרת.
    Jsonp "עובד" על הדפדפן בכך שהוא משתמש בפירצה שהדפדפן כן יודע לטעון קבצי סקריפט ממקורות זרים ומביא קטע קוד שבעצם מביא בסוף את הdata אבל זה דורש response במבנה מסוים ולכן אם השרת לא שלך זה לא עוזר.

    אפשר כמובן בצורה סיבובית לשלוח בקשה לשרת שלך ושם לבצע את הבקשה לשרת הזר ולהחזיר את המידע אליך לדף אבל אז ה request הוא מה ip שלך וזה יותר מאובטח כי בעצם המטרה של כל זה שלא יוכלו לתקוף את האתר שלך דרך דפדפנים של משתמשים תמימים.

    לסיום, מכיוון שהפונקציונאליות הזו היא ברמת דפדפן אז יש תוספים שגורמים לדפדפן כן להציג הכל על ידי התערבות בresponse והוספת header כרצונך, כמובן שברוב המקרים אתה לא יכול לבקש מכל מי שיגלוש לאתר שלך שיתקין את התוסף לדפדפן שלו. חפש cors בחנויות התוספים.

    פורסם במקור בפורום CODE613 ב28/01/2016 23:51 (+02:00)


  • המרת תאריך שהתקבל מSQL ל javascript
    S softs
    var myDate = new Date(parseInt("\/Date(1423087200000+0200)\/".match(/\d+/)[0]));
    

    מקור

    פורסם במקור בפורום CODE613 ב27/12/2015 12:47 (+02:00)


  • עזרה בתכנון
    S softs

    וואקשה

    ----Create Demo DB
    --Rooms Table
    DECLARE @Rooms AS TABLE(ID INT, Name NVARCHAR(MAX))
    INSERT INTO @Rooms VALUES(1,'Room A'),(2,'Room B')
    --Reservations Table
    DECLARE @Reservations AS TABLE(ID INT, CheckInDate DATE, CheckOutDate DATE, RoomID INT)
    INSERT INTO @Reservations VALUES
    (100,'2015-01-03','2015-01-09',1),(102,'2015-01-18','2015-02-09',1),(103,'2015-01-01','2015-01-17',2)
    
    DECLARE @Seasons AS TABLE(ID INT, Name NVARCHAR(MAX), StartDate DATE, EndDate DATE)
    INSERT INTO @Seasons VALUES
    (1,N'Winter','2015-01-01','2015-04-15'),(2,N'Spring','2015-06-18','2015-06-25')
    
    ; ----End of Demo DB
    
    ---- occupancy query (could be used as a view)
    
    -- Generate Calendar Table
    WITH Cal (CalendarDay) AS(
    SELECT CAST('2015-01-01' AS DATE) AS DateDay -- Calendar Start Date
    UNION ALL
    SELECT DATEADD(DAY,1,CalendarDay) FROM Cal WHERE DATEADD(DAY,1,CalendarDay) <  '2016-01-01' -- Calendar End Date
    )
    
    SELECT CalendarDay,Rooms.ID AS RoomID, Rooms.Name AS RoomName,Season.Name AS SeasonName,
    Res.ID AS ReservationID, CheckInDate, CheckOutDate,
    CASE WHEN Res.ID IS NULL THEN 1 ELSE 0 END IsRoomAvailable
    FROM Cal
    CROSS JOIN @Rooms AS Rooms -- create rooms calendar table (cartesian product)
    INNER JOIN @Seasons AS Season ON Cal.CalendarDay BETWEEN Season.StartDate AND Season.EndDate
    LEFT JOIN @Reservations AS Res ON Rooms.ID = Res.RoomID AND CalendarDay BETWEEN CheckInDate AND CheckOutDate -- join the reservations
    
    OPTION (MAXRECURSION 32767) -- allow recursion
    

    פורסם במקור בפורום CODE613 ב22/12/2015 23:45 (+02:00)


  • שמירת היסטורית שינויים ב SQL
    S softs

    שכלול של קטע שפרסמתי בעבר, זה פרוצדורה שיוצרת טבלה באותו שם עם תחילית H_ וגם טריגר ששומר כל פעולה של שינוי דאטה.
    השכלול העיקרי הוא שהוא יודע כעת להתמודד עם טבלאות עם כמה עמודות PK וגם עם טבלאות בלי PK ואם אין בכלל PK אז לוקח IDENTITY (אם יש).
    על מנת להפעיל שמירת היסטוריה על טבלה מריצים את הפרוצדורה עם פרמטר של שם הטבלה, אחרי שינוי במבנה הטבלה יש להריץ שוב.

    CREATE PROC [dbo].[CreateTableTriggers] (@Table NVARCHAR(MAX)) AS
        
        SET NOCOUNT ON
         
        DECLARE @CName AS NVARCHAR(MAX)
     
        DECLARE @TName AS NVARCHAR(MAX)
     
        DECLARE @TCol AS TABLE(name NVARCHAR(MAX), typ NVARCHAR(max))
     
        INSERT INTO @TCol
        Select C.name,T.name from sys.columns C inner join sys.types T ON T.user_type_id = C.user_type_id where Object_id(@Table) = object_id AND C.user_type_id NOT IN (34,165,173)
         
        DECLARE @DKey AS NVARCHAR(MAX) 
    	DECLARE @IKey AS NVARCHAR(MAX) 
     
    	DECLARE @TKey AS TABLE(name NVARCHAR(MAX), sort int)
     	
    	INSERT INTO @TKey
    	SELECT  COLUMN_NAME, ORDINAL_POSITION FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    	WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + '.' + CONSTRAINT_NAME), 'IsPrimaryKey') = 1 AND TABLE_NAME = @Table AND TABLE_SCHEMA = 'dbo'
    	
    	SET @DKey = (SELECT stuff((select ' + ''_'' + CAST(D.' + name + ' AS NVARCHAR(4000))' as [text()] FROM @TKey ORDER BY sort for xml path('')), 1, 9, ''))
    
    	SET @IKey = (SELECT stuff((select ' + ''_'' + CAST(I.' + name + ' AS NVARCHAR(4000))' as [text()] FROM @TKey ORDER BY sort for xml path('')), 1, 9, ''))
    
    	IF(@DKey IS NULL OR @IKey IS NULL) 
    	BEGIN
    
    		SET @DKey = (SELECT TOP 1 'CAST(D.' + name + ' AS NVARCHAR(4000))' FROM sys.columns where Object_id(@Table) = object_id and is_identity = 1)
    		SET @IKey =	(SELECT TOP 1 'CAST(I.' + name + ' AS NVARCHAR(4000))' FROM sys.columns where Object_id(@Table) = object_id and is_identity = 1)	
    
    	END
    
    	IF(@DKey IS NULL OR @IKey IS NULL) RAISERROR ('No Key or Identity column found.',16,1);
    	
    
        DECLARE @sSQL AS NVARCHAR(MAX) = 
        '
        CREATE TRIGGER {Table}History ON {Table} AFTER UPDATE, INSERT, DELETE AS
     
        SET NOCOUNT ON
        INSERT INTO H_{Table}
        SELECT GETDATE(),APP_NAME(),{I.KEY},''Object'',{I.KEY},'''', ''I'' FROM INSERTED I LEFT JOIN DELETED D ON {D.KEY} = {I.KEY} WHERE {D.KEY} IS NULL
        UNION
        SELECT GETDATE(),APP_NAME(),{D.KEY},''Object'',{D.KEY},'''', ''D'' FROM DELETED D LEFT JOIN INSERTED I ON {D.KEY} = {I.KEY} WHERE {I.KEY} IS NULL
        '
      
        DECLARE col_cur CURSOR FOR SELECT name, typ FROM @TCol    
        OPEN col_cur
         
        FETCH NEXT FROM col_cur INTO @CName,@TName
             
        WHILE @@FETCH_STATUS = 0
        BEGIN
             
            DECLARE @Compare AS NVARCHAR(MAX)
              
            IF (@TName IN ('int','decimal','numeric','bigint'))
                SET @Compare = 'ISNULL(D.{Col},0) <> ISNULL(I.{Col},0)'
            ELSE
                SET @Compare = 'ISNULL(D.{Col},'''') <> ISNULL(I.{Col},'''')'
     
            SET @sSQL +=
            REPLACE('
            INSERT INTO H_{Table}
            SELECT GETDATE(),APP_NAME(),{I.KEY},' + '''{Col}''' + ',D.{Col},I.{Col}, ''U'' FROM DELETED D INNER JOIN INSERTED I ON {D.KEY} = {I.KEY} WHERE ' + @Compare + ' 
            ','{Col}',@CName)
             
            FETCH NEXT FROM col_cur INTO @CName,@TName
            END
     
        CLOSE col_cur
        DEALLOCATE col_cur
         
        DECLARE @sDropSQL AS NVARCHAR(MAX) = REPLACE('IF OBJECT_ID (''{Table}History'',''TR'') IS NOT NULL
            DROP TRIGGER {Table}History','{Table}',@Table)
     
        EXEC(@sDropSQL)
     
        DECLARE @sTableSQL AS NVARCHAR(MAX) = REPLACE('
            IF OBJECT_ID (''H_{Table}'') IS NULL
            CREATE TABLE H_{Table}
            (           
                ChangeDate DATETIME NULL,
    			ApplicationName NVARCHAR(4000),
                [Key] NVARCHAR(MAX),
                ColumnName NVARCHAR(100) NULL,
                OldValue NVARCHAR(MAX) NULL,
                NewValue NVARCHAR (MAX) NULL,
                Action NVARCHAR (1)
            )
            ','{Table}',@Table)
     
        EXEC(@sTableSQL)
     
        SET @sSQL = REPLACE(@sSQL,'{Table}',@Table)
        SET @sSQL = REPLACE(@sSQL,'{D.KEY}',@DKey)
        SET @sSQL = REPLACE(@sSQL,'{I.KEY}',@IKey)
         
    
        EXEC(@sSql)
    

    פורסם במקור בפורום CODE613 ב29/11/2015 13:17 (+02:00)


  • כיצד מאחסנים תמונה בדטה בייס?
    S softs

    VARBINARY
    Byte[]

    פורסם במקור בפורום CODE613 ב25/10/2015 17:18 (+02:00)


  • מההה זההה ????
    S softs

    @אהרן

    א. <use strict>? אתה מכניס א"ז בקביעות לסקריפטים שלך?

    כן.
    @אהרן

    ב. מה??

    תחשוב על with כמו import שעושים ב C# למרחב שמות לדוגמה אם תרשום ב JS ככה:

    var r = 10;
    with (Math) {
      x = r * cos(PI);
    }
    

    זה זהה ל:

    var r = 10;
    var x = r * Math.cos(Math.PI);
    console.log(x);
    

    זה פשוט חוסך את ההקלדה של מרחב השמות / המשתנה שעליו בוצע ה with, וכך גם במקרה שלנו ב forEach, בגלל שהוא בתוך בלוק של with על המערך לא צריך לרשום את שם המערך.
    אגב זו תכונה מאוד בעייתית איך שמימשו אותה ב JS, ב VB לדוגמה אתה לא צריך להקליד את שם המשתנה אבל צריך להקליד נקודה במקום,
    במימוש הזה זה יכול לגרום לבלבול, לדוגמה כאן הוא ידפיס את x מתוך o, שזה לא קריא בכלל:

    function test(o,x) { with(o) {alert(x);}}
    var o = {x:'test1'};
    test(o,'test2');
    

    ואם אין x ב o אז הוא כן ידפיס את הפרמטר x:

    function test(o,x) { with(o) {alert(x);}}
    var o = {u:'test1'};
    test(o,'test2');
    

    לעיון נוסף
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/with

    פורסם במקור בפורום CODE613 ב18/08/2015 11:49 (+03:00)


  • "תוכנה לניהול מוסד", וואלה!...
    S softs

    ואני לתומי חשבתי שהמטרה בפורום דנן הוא לעזור לאנשים המתחילים את דרכם בעולם התכנות ולשם כך השקעתי פה עד היום מזמני
    נ.ב. נכתב אחרי שסיימתי את התוספת (למודל qlikview, אגב) ללקוח שלי. . .

    פורסם במקור בפורום CODE613 ב30/07/2015 02:32 (+03:00)


  • שימוש ב DataTable על ידי תחביר SQL ללא מסד נתונים C#
    S softs

    אני מעדיף LINQ לפעולות שאני יודע מראש מה אני הולך לבצע, למרות שאין להשוות את הביצועים ל SQL, לרשום טבלה ל DB זה גם מעמיס על הביצועים.

    אבל אכן מימשתי בעבר כזה דבר, רצו שאני יפתח מודול קליטת דפי בנק ל SAP (למי שלא ידע - אני מתמחה בSAP BUSINESS ONE) וזה חברה בינלאומית עם המון בנקים ופורמטים שונים אז הלכתי על ארכיטקטורה כזו:
    אני קולט את הקובץ ורושם את תוכן הקובץ לטבלה כמו שהוא - מחולק לשורות, ואז כל פורמט שאני מפתח הוא בעצם שאילתת SQL שהסטרינג שלה נשמר בטבלה ואני מריץ את הסטרינג הזה מול הטבלה שמכילה את תוכן הקובץ ויש לי גמישות מקסימלית, עם כמה פונקציות עזר ב SQL כמו split לימדתי אותם לעבוד עם זה, והיום הם כבר לא צריכים אותי לפתח קליטת פורמטים חדשים . . .

    פורסם במקור בפורום CODE613 ב26/07/2015 23:13 (+03:00)


  • התגוננות מהזרקת SQL
    S softs

    @דוד ל.ט.

    @softs
    אם אתה בונה דינאמי ה SqlParameter לא מגן עליך יותר מהשיטה שהצגתי, למעשה זה בדיוק מה שהוא עושה.

    יש מעלה מאוד גדולה להשתמש בקוד של אחרים ולא לכתוב את אותו הקוד לבד.
    המעלות הם חיסכון בהקף הקוד, בתחזוקה, ובקריאות - כל מתכנת שמח למצוא מתודה מוכרת מאשר מימוש פרטי של עמית.

    ראשון ראשון, ואחרון אחרון:
    חיסכון בהיקף הקוד הוא דווקא שימוש ב escape כי השימוש ב SqlParameter הופך קוד לארוך יותר
    קוד שלי לשליפת טבלה נראה כך:

    '
    Dim tbl As DataTable = DB.GetDatatable("SELECT * FROM ReportHeader WHERE CustomerName=" & DB.SqlEscape(name))
    

    ואני גם חושב שהוא גם קריא יותר.
    לגבי היכרות עם תשתיות, ומתכנתים ששמחים למצוא מימושים מוכרים, אני חושב שזה זניח ביחס לעבודה של להיכנס לקוד של מישהו אחר.
    מה גם שממתודות "לא מוכרות" של אחרים למדתי הרבה מאוד, אז לא תמיד זה שלילי. . .
    @דוד ל.ט.

    ויש עוד סיבה, שהיא הימנעות משגיאות. להסתכל בוד המקור של מקרוסופט ולהעתיק זה בטוח מבחינת זה, אבל "לטהר קלט לבד" הכוונה לממש את זה עם אי אלו הבדלים (נניח לאפשר איזשהיא תגית נוספת או לאסור יותר), וזה מ-א-ו-ד מסוכן מבחינת אבטחה, כי בן אדם טועה כשהוא כותב קוד לעיתים קרובות. זו כוונת הספר. הוא מביא שם אף דוגמה של מפתחי stackoverflow שמימשו escape לבד ונפלו עם שכחה קטנה, שהביאה פריצה.

    לא ברור למי מופנית התשובה שלך, ראית שכתבתי שאני תומך בכזו שיטה? אני חושב שהסברתי מספיק טוב מה ההבדל בין escape ל sanitizing(טיהור).
    טיהור קלט לבד זה אסור, מפתחי stackoverfolw כנראה שמימשו לבד טיהור ולא escape, בשיטה של escape אתה לא מנסה לעלות על כל הפרצות האפשריות אלא מוודא שבטוח הקלט ייכנס כסטרינג לשאילתה.

    פורסם במקור בפורום CODE613 ב24/06/2015 18:16 (+03:00)


  • MVC להבין את האריטקטורה לעומק
    S softs

    וחוץ מזה שהספר יצא לפני יותר משנה וחצי ובמושגים של NET ואבטחת מידע זה נצח...

    אני עוקב היטב אחר השינויים והחידושים בתחום ונראה מהפורום שגם דוד ל.ט. עוקב, אני יכול לומר שאכן יש שינויים אבל הבסיס לא משתנה,
    גם תשובה שתקרא ב stack overflow לפעמים נכתבה לפני שנה או יותר.
    לעניות דעתי ספר מלפני שנה וחצי הוא בהחלט מעודכן ממש (אם הוא היה מעודכן כשנכתב כמובן) ואחרי שמסיימים צריך להמשיך לעקוב בעצמך.
    בין כה אין סיכויי שרידות גבוהים למתכנת שלא יודע להתעדכן בכוחות עצמו.
    דוד ל.ט. תקן אותי אם אתה חושב שאני טועה.

    לגבי התרגום לעברית זה בעיה קשה, לפעמים המתרגם חושב שהוא יישמע מתוחכם יותר אם יאלץ ביטוי בעברית
    לדוגמה I couldn't care less שמי שמתרגם אותו "לא יכול להיות אכפת לי פחות" מחבל בכל ענין התרגום
    אגב יש צורות שכבר נכנסו לשפה בעקבות כאלו תרגומים כמו הביטוי "אי אפשר להפריז בחשיבותו של.." וכו'

    פורסם במקור בפורום CODE613 ב10/06/2015 14:07 (+03:00)


  • כמה טיפים חדשים שלמדתי ב SQL SERVER
    S softs

    חישוב מרחקים בין נ"צ

    DECLARE @EarthSRID INT = 4326 -- קבוע לכדור הארץ
    DECLARE @GeoLocation1 geography = geography::Point(31.778114, 35.235983, @EarthSRID)
    DECLARE @GeoLocation2 geography = geography::Point(31.771672, 35.229502, @EarthSRID)
    
    SELECT @GeoLocation1.STDistance(@GeoLocation2) -- מרחק אווירי במטרים
    

    פורסם במקור בפורום CODE613 ב10/05/2015 15:59 (+03:00)


  • כמה טיפים חדשים שלמדתי ב SQL SERVER
    S softs

    linked server יכול גם לחבר קבצי אקסל, אקסס ואפילו CSV

    פורסם במקור בפורום CODE613 ב10/05/2015 15:41 (+03:00)


  • כמה כוסות קפה מתכנת שותה ליום?
    S softs

    @אבי

    השאלה האמיתית היא איזה קפה? כי יש קפה ויש קפה...

    איפה ה while? 🙂

    פורסם במקור בפורום CODE613 ב23/03/2017 17:57 (+02:00)


  • להציג הודעה ב GMAIL לפי ID
    S softs

    @דוד ל.ט.

    נסה אותו: התנתק מחשבונך בדפדפן, וכשתקבל הודעה חדשה עם חיווי הקלק לפתיחה בדפדפן. נפתח ההודעה בלי שום אימות?

    כמובן שזה דורש Login מחדש . . .
    אולי הכוונה על זה שהוא מציג את ההודעות בחלונית הקטנה אבל שם זה פשוט מציג את ה HTML של ההודעה ולא מתוך ה UI של המערכת

    פורסם במקור בפורום CODE613 ב19/04/2015 16:08 (+03:00)


  • התערבות ב- AutoGenereted Code של EF
    S softs

    כמו שבטח הבנת אי אפשר לכתוב ידנית בקוד האוטומטי כי זה יידרס בפעם הבאה שהקוד יתעדכן,
    אני לא מכיר EF אבל בחשיבה פשוטה של OOP תירש את הקלאס הזה לקלאס שלך ושם תעשה בקונסטרקטור מה בא לך . . . (אא"כ הוא sealed)

    אם אנחנו מדברים ספציפית על EF, ר' גוגל מצא לי משהו מעניין: יש את הענין של Partial Class, למי שלא מכיר בקצרה זה אומר שאתה יכול ליצור עוד קובץ לקלאס מסוים ולהוסיף בו עוד מתודות שיהיו חלק מהקלאס
    ועל אותו רעיון יש גם Partial Methods שמתודה שנמצאת בקלאס האוטומטי יכולה להמשיך בקלאס השני, במקרה שלך הבעיה היא שאין PARTIAL CONSTRUCTOR (עדיין)
    אבל בכ"ז יש פתרון כי ה EF בסוף הקונסטרקטור שלו קורא ל Partial Method בשם OnCreated אז פשוט תייצר partial class לקלאס האוטומטי ושם תשים Partial Method בשם OnCreated ושים שם את הלוגיקה

    מקור:

    פורסם במקור בפורום CODE613 ב24/03/2015 03:14 (+02:00)


  • MSSQL ייצוא טבלה/VIEW לקובץ CSV
    S softs
    CREATE PROC [dbo].[ExportTable] (@TableName NVARCHAR(MAX) , @FileName NVARCHAR(MAX)) AS
    
    DECLARE @FileContents VARCHAR(MAX)
    DECLARE @FieldNames VARCHAR(MAX)
    
    SET  @FieldNames = 
    (SELECT SUBSTRING(( SELECT ',' + '' + name + '' FROM sys.columns WHERE Object_id = Object_ID(@TableName)FOR XML PATH('')),2,200000) AS CSV)
    
    SET @FileContents = 
    (SELECT SUBSTRING(( SELECT ',' + 'CHAR(34) + CAST([' + name + '] AS NVARCHAR(MAX)) + CHAR(34)' FROM sys.columns WHERE Object_id = Object_ID(@TableName)FOR XML PATH('')),2,200000) AS CSV)
    
    declare @sql varchar(8000)
    select @sql = 'bcp "select ''' + @FieldNames + '''" queryout ' + @FileName + '_headers.csv -c -t, -T -S' + @@servername
    exec master..xp_cmdshell @sql
    
    select @sql = 'bcp "select ' + @FileContents + ' from ' + DB_NAME() + '..' + @TableName + '" queryout ' + @FileName + '_Lines.csv -c -t, -T -S' + @@servername
    exec master..xp_cmdshell @sql
    
    DECLARE @FinalFileName AS NVARCHAR(MAX) = '' + @FileName + '.csv'
    
    SET @sql = 'copy ' + @FileName + '_headers.csv+' + @FileName + '_Lines.csv ' + @FinalFileName
    
    exec master..xp_cmdshell @sql
    
    SET @sql = 'del ' + @FileName + '_headers.csv, ' + @FileName + '_Lines.csv'
    
    exec master..xp_cmdshell @sql
    

    שימוש לדוגמה

    [ExportTable] 'Monthly_DailyFlatFile', 'C:\test1'
    

    פורסם במקור בפורום CODE613 ב08/02/2015 15:22 (+02:00)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 10
  • 11
  • 3 / 11
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום