PDA

View Full Version : راهنمایی جهت استفاده از EF در برنامه نویسی سایت



maktab
دوشنبه 14 آذر 1390, 15:31 عصر
برای من امنیت سایت و سرعت آن اهمین فراوانی دارد و با توجه به مطالبی که در انجمن خوندم متوجه شدم که sp امنیت بالاتری نسبت به linq to sql و ef دارد.
حالا برام یه سوال پیش آمده. که ef اطلاعات را با توجه به دستوراتی که ایجاد می کند از بانک اطلاعاتی خونده و در برنامه در اختیار ما قرار می دهد. حالا ما می توانیم در ef هم از sp استفاده کرد؟ چطوری؟ آیا امنیت سایت را پایین نمی آورد؟

raziee
دوشنبه 14 آذر 1390, 16:09 عصر
با سلام.
اول اینکه احتمالا شما به خاطر ارسال با پارامتر هست که در SP ها فکر می کنید امنیت بالاتر هست.
خوب این موضوع صحیح هست.
اما در L2S و EF هم تمامی کوئری های نوشته شده مقادیر را با پارامتر ارسال میکنند.
اساسا کوئری هایی که توسط L2S و EF نوشته میشوند احتمال تزریق کدهای T-SQL رو از بین میبرند.

اگر منظورتون از امنیت SP ها موضوع دیگه ای هست بگید.

اما در مورد طریقه استفاده SP در EF به شکل زیر عمل میشه:

var items = db.Database.SqlQuery<returntype>("SQL Query",params);
البته بسته به اینکه شما به چه طریقی از EF استفاده میکنید فرق داره.
این لینک (http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/12/17/ado-net-entity-framework-tools-stored-procedures.aspx) رو ببینید.

maktab
دوشنبه 14 آذر 1390, 18:54 عصر
من زیاد با EF کار نکردم! تا این حد بوده که بانک اطلاعاتی را به آن داده و کدهای EF را به من تحویل بده یا برعکس (در محیط دات نت، جدول و روابط را ساخته و با استفاده از EF، بانک اطلاعاتی را بدست می آورم).
در هر دو روش من sp ننوشتم و فکر نمی کردم نیازی به آنها باشند!! چون لایه اتصال به بانک را خود EF میساخت.
الان بین این دو روش ماندم! نمی دونم از کدام روش استفاده کنم. به نظر شما کدام بهتر است؟
اتصال به بانک (ارسال و دریافت) را به عهده EF بزارم یا با استفاده از sp نوشتن و sql و کد نویسی بیشتر این لایه را خودم درست کنم.

maktab
دوشنبه 14 آذر 1390, 18:57 عصر
اگر میشه توضیح بدید در روشی که از ef استفاده می کنیم (بدون sp) اطلاعات به چه صورت خوانده، ارسال، ویرایش و... می شوند؟ تا جایی که من با آنها کار کردم هیچگونه دستورات sql در آنها مشاهده نکردم!! در کجا قرار میگیرند؟

منظورم نحوه استفاده از ef در برنامه نویسی نیست! بلکه می خوام بدون خود ef به چه شکل با بانک ارتباط برقرار میکنه. مثلا ما به آن یک شی می دهیم و میگیم آن را حذف کن. خب حالا حتما ef از دستورات sql برای حذف استفاده می کنه. آنها کجا قرار گرفتن؟