מדריך CSHTML – עבודה עם נתונים: התחברות לבסיס הנתונים
ניתן להתחבר לבסיס נתונים בשתי דרכים. הדרך הראשונה היא להשתמש ב-path לקובץ בסיס הנתונים. על מנת להשתמש ב- path, מעבירים את ה-path לפעולה Database.OpenFile כמו בדוגמא הבאה:
var db = Database.OpenFile("Bakery.sdf");
באופן כללי, קובץ ה- .sdf נמצא בתוך התיקייה של App_Data. לתיקיה זו מספר מאפיינים שעובו במיוחד על מנת להחזיק במידע. לדוגמא, יש לו את ההרשאות המתאימות לאפשר לאתר לקרוא ולכתוב מידע, אבל כאמצעי בטיחות WebMatrix לא מאפשר גישה לקבצים מתוך התיקיה.
ניתן גם לציין path מסוים כמו בדוגמא הבאה:
var db = Database.OpenFile(@"Data Source=C:SmallBakeryApp_DataSmallBakery.sdf");
אמנם, זאת בדרך כלל דרך פחות גמישה מכיוון שאם האתר מועבר למקום אחר, ה-path בחלק הקוד הקודם תהיה לא נכונה.
כאלטרנטיבה ניתן להשתמש ב-Connection string, אשר מחזיק אינפורמציה שמציינת איך להתחבר לבסיס הנתונים. הוא כולל file path, או שהוא יכול לכלול את השם של שרת ה-SQL על מכונה מקומית או מרוחקת ובנוסף משתמש וסיסמא להתחברות לבסיס הנתונים.
אם אתה שומר את המידע בשרת SQL מרכזי, אתה תמיד צריך להשתמש ב- Connection string לייצוג פרטי החיבור. ב- WebMatrix, אותם Connection Strings נשמרים בקבציXML הנקראים Web.config. כמו שהשם מרמז, ניתן להשתמש ב – Web.config בשורש האתר שלך, על מנת לשמור מידע על קונפיגורציה לאתר כולל גם Connection Strings שהאתר יכול להשתמש בהם.
דוגמא ל-Connection string מתוך Web.config יכולה להראות בדומה לזה:
<connectionStrings> <add name="SmallBakeryConnectionString" connectionString="Data Source=|DataDirectory|SmallBakery.sdf"/> </connectionStrings>
בדוגמא זו, ה- Connection String משתמש ב-path כדי להפנות לקובץ sdf. אבל הוא יכול גם להפנות לשרת.
בקוד, על מנת להתחבר לבסיס נתונים תוך שימוש ב- Connection String, ניתן להשתמש בפעולה -Database.OpenConnectionString, אליה נעביר את שם ה- Connection String שמעוניינים להשתמש בו. בדוגמא הבאה נראה כיצד להתחבר ל – SmallBakery.sdf ע"י שימוש ב – Connection String שהוצג קודם:
@using Microsoft.Data.Dorm; @{ var db = Database.OpenConnectionString("SmallBakeryConnectionString"); }
בכל מקרה, המשך העבודה מול מסד הנתונים מבחינת ביצוע שליפות ופעולות נוספות עם המידע נשאר ללא שינוי.
תגובות בפייסבוק