none
שינוי סכמה בlinq RRS feed

  • שאלה

  • בוקר טוב לכולם!

    אני עובדת עם linq to entity.

    כדי ליעל את הDB החלטנו להוסיף טבלאות בDB עם סכמות שונות.

    אם היו לי למשל טבלאות dbo.products,dbo.orders....

    כל לקוח חדש שנוצר יהיה לו newUser.products,newUser.orders....

    יש לי כמה טבלאות גלובליות גלובליות שלא יהיו לכל לקוח (כמו dbo.countries)

    אשמח לדעת איך linq מסתדר עם זה (ואם בכלל....) והאם אוכל להחליף סכמה בזמן ריצה.

    תודה!!!! ויום מצוין!!

    שרה.

    יום שני 29 יולי 2013 06:36

תשובות

  • תודה לכל אילו שניסו לעזור!

    linq אמנם לא תומך בשינוי סכמות, אבל מצאתי ספריה שכתב Brandon Haynes שתומכת בכל הרעיון של שינויים בזמן ריצה (סכמות prefixes ועוד)

    http://efmodeladapter.codeplex.com/

    בצעתי כמה שינויים בConnectionAdapter class כדי שזה יעבוד:

    1. שיניתי את השורה:

    private static XNamespace StoreNamespace = "http://schemas.microsoft.com/ado/2006/04/edm/ssdlEntitySet";

    בשורה הזו: (בהתאם לxmlns:store שנמצא בedmx file)

    private static XNamespace StoreNamespace = "http://schemas.microsoft.com/ado/2009/02/edm/ssdl";

    2. הורדתי מהשורות האילו את הstatic ועשיתי שיהיו רכיבים לא סטטיים:

    private static IDictionary<string, MetadataWorkspace> metadataMapping = new Dictionary<string, MetadataWorkspace>();

    protected static IDictionary<string, MetadataWorkspace> MetadataMapping { get { return metadataMapping; } }

    שוב תודה!!! 

    שרה.

    • סומן כתשובה על-ידי ssfrank יום רביעי 31 יולי 2013 05:52
    יום רביעי 31 יולי 2013 05:52

כל התגובות

  • תודה לכל אילו שניסו לעזור!

    linq אמנם לא תומך בשינוי סכמות, אבל מצאתי ספריה שכתב Brandon Haynes שתומכת בכל הרעיון של שינויים בזמן ריצה (סכמות prefixes ועוד)

    http://efmodeladapter.codeplex.com/

    בצעתי כמה שינויים בConnectionAdapter class כדי שזה יעבוד:

    1. שיניתי את השורה:

    private static XNamespace StoreNamespace = "http://schemas.microsoft.com/ado/2006/04/edm/ssdlEntitySet";

    בשורה הזו: (בהתאם לxmlns:store שנמצא בedmx file)

    private static XNamespace StoreNamespace = "http://schemas.microsoft.com/ado/2009/02/edm/ssdl";

    2. הורדתי מהשורות האילו את הstatic ועשיתי שיהיו רכיבים לא סטטיים:

    private static IDictionary<string, MetadataWorkspace> metadataMapping = new Dictionary<string, MetadataWorkspace>();

    protected static IDictionary<string, MetadataWorkspace> MetadataMapping { get { return metadataMapping; } }

    שוב תודה!!! 

    שרה.

    • סומן כתשובה על-ידי ssfrank יום רביעי 31 יולי 2013 05:52
    יום רביעי 31 יולי 2013 05:52
  • בוקר טוב

    אני מצטער שלא קיבלת תגובה מהירה מספיק מצד אחד אבל מצד שני אין יותר טוב מבחינה לימודית מאשר להשקיע -> לחפש -> לקרוא הרבה דברים -> ולהגיע לתשוה לבד :-)

    אז קודם כל כל הכבוד על התשובה ועל כך שזכרת להציג לאחרים את התשובה אם תהיה להם שאלה דומה.

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


    signature

    יום רביעי 31 יולי 2013 07:05
    מנחה דיון
  • תודה על ההערה.

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

    פעם הבאה אסמן את התשובה כ"הצע כתשובה"

    תודה!!!

    שרה.

    יום רביעי 31 יולי 2013 07:36
  • הבנת נכון :-)
    לכן אמרתי כל הכבוד על זה שהבאת את התשובה

    אני פשוט מחפש דרך שגם תקבלי נקודות (שאין להם שום משמעות אמיתית) בשביל התשובה שהבאת :-)

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


    signature

    יום רביעי 31 יולי 2013 07:42
    מנחה דיון