پیکر بندی Entity Framework با کانکشن دستی

by MDP 11. July 2011 01:10

حتمی شما توی پروژه هاتون دوست داشتید که Connection String در EF داخل فایل Web.Config یا App.Config قرار ندید که امنیت نرم افزارتون بالا بره.

ایده های زیادی در رفع مشکل فوق وجود داره ، از جمله :

    1. Encrypt کردن Web.Config (+ یک نسخه وطنی)
    2. ذخیره کردن Connection String در یک دیتابیس دیگر
    3. ذخیره کردن Connection String در یک فایل متنی مخفی
    4. Embed کردن Connection String در فایل های Resource
    5. ذخیره کردن Connection String به صورت HardCode ( البته این اصطلاح Hard Code غلطه )

شما هر کدون از این روش ها رو که استفاده کنید بازم لازم دارید که به EF بفهمونید که Connection String کدومه.Code Generator بعد از Map کردن Entity ها ، سه مدل Constructor برای مدل شما می سازه:

  1. Constructor عادی و بدون پارامتر
  2. Constructor با پارامتر ConnectionString که یک String از شما دریافت میکنه.
  3. Constructor با پارامتر Connection که از نوع “EntityConnection” هست.

مورد اول که از اطلاعات Base که توسط Code Generator ساخته میشه استفاده میکنه.مورد دوم و سوم جای بحث دارن.

برای ادامه بحث باید ابتدا ساز و کار EF رو مورد بررسی قرار بدیم.EF برای Mapping از سه فایل CSDL ، SSDL و MSL استفاده میکنه.

این سه فایل اطلاعات اصلی برای برقراری ارتباط بین EF و DataBase رو بر عهده دارن که شمال اطلاعات Entity ها ، روابط و ... میشن.

EF برای پیکر بندی به این اطلاعات نیاز داره.به خاطر همین باید توی Connetion Strnig این اطلاعات وجود داشته باشه.یعنی آدرس این سه فایل داده بشه.ولی این سه فایل هنگام Build شدن به داخل یک فایل مرکزی با پسوند EDMX ترکیب میشن.راه حل آدرس دهی سادست.شما باید از کلاس “System.Data.EntityClient.EntityConnectionStringBuilder” برای ساختن Connection استفاده کنید.

روش پیاده سازی :

string connectionString = new System.Data.EntityClient.EntityConnectionStringBuilder()
{
	Metadata = "res://*",
	Provider = "System.Data.SqlClient" /* if the provider is MS SQL */,
	ProviderConnectionString= "Reqular database connection string"
}.ConnectionString;

شاید از خودتون در مورد خط سوم یعنی آدرس دهی Metadata سوال کنید.این بخش آدرس همون سه فایل مذکور هست که باید داده می شد که به این شیوه از Resource ها خونده میشه و البته به صورت خودکار اون سه فایل رو خودش استخراج میکنه.شما فقط کافیه که این آین Connection رو که به صورت String هست به Constructor های EF بدید و تمام !

Tags: ,

.Net | EF

My Groups

Poll

از چه پلتفرمی برای توسعه استفاده می کنید



Show Results

Month List