# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > دسترسی به داده ها (ADO.Net و LINQ و ...) >  توضیحاتی در مورد entity framework

## electro_esma

این توضیحات رو چند روز قبل یعنی درست بعد از شروع بحث جالب آموزش توسط استاد gwbasic تو یه سایت خوندم گفتم بذارم دوستان هم استفاده کنن.

مطالب عینا از سایت نقل شده . دلیل اینکه برای اینکار فقط لینک معرفی نکردم اینه که دوستان با ورود به پست حداقل یه نگاه اجمالی به این موضوع داشته باشن.

آدرس سایت: http://irmeta.com/meta/index.php?topic=6232.0
بخش 1

مقدمه
مایکروسافت قبل از معرفی Entity Framework ، تکنولوژیهای ado , rdo و سرانجام ado.net را ارایه کرده بود و برای اکثر این تکنولوژیها زمان زیادی گذاشته بود ، هر کدام از اینها در زمان خود یک تکنولوژی نوینی و حرکت عظیمی بود . اما با گسترش مفاهیم شی گرایی و نیاز مبرم برنامه نویسان به ایجاد اشیا از داده ها و جداول بانکهای اطلاعاتی مایکروسافت اقدام به توسعه تکنولوژی ado.net کرد و ابتدا امکانات linq و سپس Entity Framework را برای تعامل بهتر با شی گرایی مطرح کرد .

تا قبل از آن برنامه نویسان زمان زیادی را برای برنامه نویسی اشیا جدولهای بانکهای اطلاعاتی و ارتباطات آن صرف می کردند و هر گونه تغییر در جداول بانکها مستلزم تغییرات فراوانی در کد نویسی است .

ابتدا فهرستی از ابزارهای مدل سازی را معرفی می کنم :



1-ERM یا Entity Relationship Model ابزاری برای مدل سازی پایگاههای داده ای رابطه ای .

2- UML یا Unified Modeling Language زبان استاندار ماژول سازی اشیا و کلاسها

3-ORM یا Object-Relational Mappingروشی و ابزاری برای ایجاد تعامل ماژولار میان اشیا بانکهای اطلاعاتی رابطه ای و زبانهای برنامه نویسی شی گرا

4-DFD یا Data Flow Diagram ابزاری برای نمایش نموداری از جریان داده ها و فرآیند سیستم



البته چند ORM دیگر هم وجود دارد یکی NHibernate و SPRINT.net هر دوتای آنها از جاوا مشتق شده اند و توانمنیدهای فراوانی دارند اما بحث ما Entity Framework.Net4 است .

البته لیست بالا لیست کاملی نیست و از حوصله این بحث خارج است .



قبل از ورود به بحث Entity Framework مقدمه ای در مورد Entity Data Model یا مختصرا EDM باید بیان شود .EDM در حقیقت پایه و پیش نیاز Entity Framework است و شامل سه model است

1-مدل مفهومی 2-مدل منطقی 3-مدل ذخیره سازی یا فیزیکی

ما می توانیم بگوییم که EDM یک نسخه تکامل یافته ERM است .ما در مدل EDM در مورد ساختار شی گرای business objects داده ها بحث می کنیم در حالی که در مدل ERM ما در مورد طرح بانک اطلاعاتی بحث می کنیم .که باید تفاوت میان مدل داده و مدل شی را متوجه شویم ، شکل زیر یک مدل داده را نشان می دهد در حالی که شکل بعدی مدل شی گرا از بانک اطلاعاتی ما را نشان می دهد.

----------


## electro_esma

Entity%20Framework13.jpg

Entity  چیست ؟

ما برای فهم Entity Framework  باید ابتدا مفهوم Entity  را متوجه شویم ، البته بعدا در مورد این مفصلا خواهم نوشت ولی فعلا برای فهم بیشتر مقایسه ای با object  و relational data  انجام می دهم

تشابه Entity  با شی یا object

1-   Entity مانند شی دارای انواع تعریف شده برای داده ها و فیلدها است

2-  Entity  مانند شی دارای خصوصیت یا properties است

3-   هر    Entity  یک هویت متمایزی دارد

4-   یک خصوصیت   Entity  می تواند ارجاعی به Entity  دیگر باشد



تفاوت Entity  با شی یا object

1 -Entity  می تواند یک فیلد اصلی یا primary keys داشته باشد

2-Entity  می تواند دارای ارتباطی با Entity  دیگر باشدمانند ارتباطات موجود در بانک اطلاعاتی



تشابه Entity  با داده رابطه ای relational data

1-Entity  یک ارتباط چند گانه مانند داده ها با دیگر entity  می تواند داشته باشد

2-Entity   مانند داده ها می تواند کلید اصلی یا primary key داشته باشد



تفاوت Entity  با داده رابطه ای relational data

1-Entity  از داده ها با نوع پیچیده  complex typesپشتیبانی می کند

2-Entity  از وراثت موجود در کلاسها پشتیبانی می کند

3-Entity  داده های فیزیکی را ذخیره نمی کند .



پس Entity  Framework   چیست ؟

درواقع Entity Framework   تکنولوژی توسعه یافته ADO.Net  است که فاصله بین برنامه نویسی شی گرایی و بانک اطلاعاتی رابطه ای را پر می کند .این فاصله معمولا تحت عنوان عدم تطابق شناخته می شود. و یک تکنیک برنامه نویسی برای تبدیل ارتباطات در Database به مفاهیم Object Oriented در برنامه نویسی است. در واقع می‌توان گفت که کلا‌س ها را به Table ها map می‌کند. وقتی که شما می‌خواهید به Database دسترسی پیدا کنید، یا اطلاعاتی را ذخیره کنید، این کارها را مستقیما بر‌ روی اشیاء ( Object تان ) انجام می‌دهید. Entity  Framework مدل داده ها را به سه بخش تقسیم می کند 1-مدل مفهومی یا ادراکی 2-مدل منطقی 3- مدل فیزیکی


پایان بخش اول

----------


## haniyehghassami

وای مرسی
چه باحال بودن
برم امتحانشون کنم یاد بگیرم
بازم ممنونم :چشمک:

----------


## electro_esma

بخش دوم 


در بخش قبل معرفی مختصر در مورد Entity Data Moule    یا مخفف EDMداشتیم ، اما در این بخش به شرح مفصلتری می پردازم

قبل از آن شما بانک اطلاعاتی northwind   را آماده کنید فایل این بانک را می توانید ازلینک دانلود کنید

ایجاد یک EDM

در نسخه های قبلی Entity Framework ما فقط می توانستیم برای بانک اطلاعاتی موجود از قبل یک مدل طراحی کنیم .که ما می توانستیم برای آن یک مدل مفهومی ایجاد کنیم .درواقع ما از بانک اطلاعاتی به مدل می رسیدیم ، اما حالا می خواهیم برعکس از مدل به بانک اطلاعاتی برسیم .

از مهمترین امکانات اضافه شده به Entity Framework 4 بصورت 2 مورد زیر است :

1-Model-first : به شما اجازه می دهد که ابتدا یک empty model ایجاد کنید ، و ابتدا model خودتان را تعریف کنید و سپس بانک اطلاعاتی و mapping و کلاسها را  بر اساس model تعریف شده ایجاد کنید .

2-Code-only: به شما اجازه می دهد که برای استفاده از Entity Framework  با استفاده از Plain Old CLR Objects یا مختصرا

POCO  درواقع Entity  خود را بدون استفاده از فایل EDMX ایجاد کنید .

اکنون برای یادگیری ابتدایی سعی می کنم ابتدا بر اساس اینکه بانک اطلاعاتی موجود است یک مدل طراحی می کنیم و بعدا با مدلی سرو کار خواهیم داشت که بر عکس یعنی اول مدل بعد بانک اطلاعاتی

آموزش حالت database-first approach

ما در اینجا با بانک اطلاعاتی northwind آموزش را ارایه می دهم با sql-server 2008 R2  و Visual Studio 2010  و دانت نت 4

شما می توانید از لینک زیر بانک اطلاعاتی را دانلود کنید .

خوب اکنون پس از نصب بانک اطلاعاتی سراغ vs  برویم و یک پروژه Windows Forms Application ایجاد می کنیم مطمن باشید که  .Net Framework 4  انتخاب شده باشد.

اکنون در پروژه ، سراغ منوی Project   بروید و گزینه  Add New Item را انتخاب کنید  مانند شکل زیر 

Entity%20Framework13.jpg

در شکل بالا دقت کنید که از قسمت سمت راست گزینه data  را انتخاب کنید و سپس گزینه ADO.NET Entity Data Model

را انتخاب کنید .با انتخاب این گزینه و وارد کردن نام مناسب ( در اینجا ما همان نام Model1.edmx را بصورت پیش فرض قبول می کنیم ) و دکمه Add را می زنیم .پس از آن وارد ویزارد Entity Data Model Wizard می شویم در این ویزارد ما گزینه

    Generates from database را انتخاب می کنیم و به مرحله بعدی می رویم .در این صفحه مطابق شکل زیر :


Entity%20Framework43.jpg

ما ابتدا باید مقدار connections را مشخص کنیم پس بر روی دکمه New Connection  کلیک کنید تا وارد صفحه Connection Properties بشوید در این صفحه ابتدا از قسمت نام سرور server name  نام سرور بانک اطلاعاتی را انتخاب کنید و برحسب تنظیمات دستگاه شما از لیست بانکهای اطلاعاتی نام بانکnorthwind  را انتخاب کنید .صفحه ویزارد شما مشابه شکل زیر خواهد شد .در این صفحه تیک مقابل جمله save entity connection ….. باعث می شود که رشته اتصال به بانک اطلاعاتی با همان نام مشخص شده در زیر آن در فایلی تحت عنوان App.config  ذخیره شود .اکنون به مرحله بعد می رویم مطابق شکل زیر 

Entity%20Framework45.jpg


خوب اکنون در صفحه بالا جدولهای و view  ها و stored Procedure های بانک اطلاعاتی شما لیست می شوند.

در اینجا ما جدول Category  و جدول products را انتخاب می کنیم و از قسمت view ها Products by Category را انتخاب می کنیم همچنین از stored procedure هم SalesByCategory را انتخاب می کنیم . و سپس دکمه finish  را کلیک می کنیم .

نکته : حتما قبل از زدن دکمه finish دو تیک Pluralize  و include foreign…  را دیدید

Pluralize or singularize از مهمترین بهبودها در نسخه 4 EF است .در نسخه های قبلی EF  خاصیت

Entity Set Name and Entity Name properties  با یک نام بودند که این مساله باعث گیجی برنامه نویس می شد که خوشبختانه در این نسخه 4 امکان تفکیک براحتی فراهم شده است مثلا برای

category به شکل زیر دفت کنید


Entity%20Framework65.jpg



و در نهایت شما فایل module1.edmx  را باز کنید که مطابق شکل زیر نمای جداول بانک اطلاعاتی رادر فضای ماژولار EDM نمایش می دهد ،


Entity%20Framework74.jpg

----------


## haniyehghassami

سلام
ممنون از اموزشتون
یه سوال؟
ایا توی دیزاین این مدل ها میشه رابطه های یک به چند و ... هم تعریف کرد؟

----------


## electro_esma

بخش سوم

Model-First Approach
در مطالب قبلی در مورد Entity و نحوه استفاده از ویزارد برای تولید کلاس در صورت وجود بانک صحبت کردم ، اما امروز می خواهم در مورد حالتی صحبت کنم که ما مدل کلاسها را ترسیم می کنیم و از این مدل می خواهیم بانک اطلاعاتی را ایجاد کنیم ، این ویژگی از جالبترین و مهمترین ویژگیهای اضافه شده در EF4 است که مایکروسافت آن را اضافه کرده است .

مانند مقاله بخش 2 ، یک پروژه تحت ویندوز باز کنید ،از منوی Project کزینه Add New Item و سپس گزینه ADO.NET Entity Data Model را انتخاب کنید اما از پنجره ظاهر شده در زیر گزینه empty model را انتخاب کنید 

Entity%20Framework48.jpg

ماژول خالی برای شما ایجاد می شود ، اکنون جعبه ابزار را باز کنید و ابزار زیر را مشاهده کنید 

Entity%20Framework49.jpg

ابزارهایی را مشاهده می کنید که مختصرا آنها را توضیح می دهم.

Entity : به شما اجازه می دهد که یک Entity را ایجاد و طراحی کنید

Association : برای تعریف و ایجاد روابط میان دو عنصر Entity

Inheritance : برای ایجاد رابطه وراثت بین عناصر و کلاسهای Entity

زیاد نگران نباشید در ادامه مفصلا در مورد سه عنصر بالا توضیح خواهم داد. فعلا هدف آشنایی کلی با مفاهیم است .پس اکنون دست به کار می شویم و اولین entity را با استفاده از جعبه ابزار ایجاد می کنیم .یک Entity را از جعبه ابزار انتخاب کنید و آن را با کشیدن و رها کردن بر روی صفحه خالی ماژول بیاورید .

Entity%20Framework410.jpg


اکنون به اولین Entity ایجاد شده دقت کنید .

. یک properties دارد با نام Id است علاوه بر آن این خصوصیت یک primary Key برای این Entity ایجاد شده است .شما می توانید با انتخاب آن از شکل خصوصیات و پارامترهای آن را عوض کنید .پس از تنظیم پارامترهای دلخواه ، شما می توانید بر حسب نیازتون عناصر دیگری به Entity اضافه کنید . برای اینکار کافیست برروی Entity کلیک راست کنید و گزینه Add را انتخاب کنید .


Entity%20Framework511.jpg


اگر دقت کنید با دو گزینه scalar property , complex property مواجه می شویم ، شما نگران نباشید از بخش بعدی یعنی بخش چهارم وارد جزییات خواهیم شد و موارد را به تفصیل شرح خواهم داد .

اکنون شما گزینه scalar property را انتخاب کنید نام آن را CustomerFirstName قرار دهید و نوع آن یعنی Type را از نوع کارکتری یعنی string انتخاب کنید و بقیه را مطابق شکل زیر

Entity%20Framework662.jpg

و سپس خصوصیات دیگری را مطابق لیست زیر با نوعهای مشخص شده مانند حالت بالا اضافه کنید

CustomerLastName (String)

CustomerAddress (String)

CustomerCity (String)

CustomerState (String)

CustomerZipCode (String)

CustomerPhone (String)

ModifyDateTime (DateTime)

سپس یک Entity دیگر ایجاد کنید و عناصر زیر را به آن اضافه کنید

OrderID (int32)

CustomerID (int32)

ItemID (int32)

ModifyDateTime (DateTime)

اکنون ما 2 Entity داریم ، حالا می خواهیم یک ارتباط بین این 2 برقرار کنیم برای اینکار از جعبه ابزار Associtation را انتخاب کنید و سپس از Entity1 فیلد Id را انتخاب کنید و از Entity2 فیلد customerId را انتخاب کنید رابطه شما بین این دو فیلد مانند شکل زیر خواهد شد .

----------


## electro_esma

ادامه پست 6..

Entity%20Framework163.jpg

اکنون نوبت ایجاد بانک اطلاعاتی از مدول و کلاسهای بالا است . اکنون بر روی فضای خالی از صفحه مازول کلیک راست بزنید و گزینه Generate Database From Model  را انتخاب کنید صفحه زیر نمایش داده می شود .

Entity%20Framework164.jpg

در اینجا شما باید بانک اطلاعاتی و رشته اتصال را مشخص کنید .دکمه next  را بزنید و به مرحله بعد بروید صفحه ای برای شما نمایش داده می شود که مجموعه دستورات DDl را برای ایجاد این جدولها در بانک اطلاعاتی را بصورت فایلی ذخیره می کند .

Entity%20Framework1555.jpg


دکمه Finish  را کلیک کنید تا فایل مورد نظر شما ایجاد شود که حاوی کدهایی برای ایجاد بانک اطلاعاتی است .یک فایلی با فرمت .sql  خواهد بود ، همانطور که در شکل بالا می بینید .اکنون برای اجرای اسکریپت بالا در فضای خالی از کد اسکریپت کلیک راست کرده و گزینه Execute Sql  را مطابق شکل زیر انتخاب کنید ، اسکریپت شما در بانک اطلاعاتی مشخص شده ایجاد خواهد شد


Entity%20Framework1556.jpg

به بانک اطلاعاتی خودتان بروید تا جدولهای ایجاد شده را مشاهده کنید .

ادامه دارد..

----------


## سوداگر

سلام!
چند تا سوال در مورد Entity Framework داشتم. :خجالت: 



> و یک تکنیک برنامه نویسی برای تبدیل ارتباطات در Database به مفاهیم Object Oriented در برنامه نویسی است. در واقع می‌توان گفت که کلا‌س ها را به Table ها map می‌کند.


تا چه حدی از مفاهیم شیءگرایی استفاده میکند؟ (3 رکن اصلی شیءگرایی را می گویم)
به Table ها map می‌کند یعنی چی؟




> وقتی که شما می‌خواهید به Database دسترسی پیدا کنید، یا اطلاعاتی را ذخیره کنید، این کارها را مستقیما بر‌ روی اشیاء ( Object تان ) انجام می‌دهید.


آیا این دسترسی مستقیم که گفتید به معنای "معماری متصل" است که در ADO.Net، کنار گذاشته شد؟
آیا مزایای معماری غیر متصل، که از DataSet استفاده میکند را دارد؟ (مثلا به جای اینکه 10 نفر همزمان از پایگاه استفاده کنند، 100 نفر استفاده کنند). اگر دارد، چگونه و اگر نه، آیا محدودیت تلقی نمیشود؟
ممنون از ایجاد این تاپیک.

----------


## omidh2007

سلام . اگه Relation ها رو توی SQL Server (دیتا بیس اصلی) مشخص کنم بهتره یا این که
توی EF Class ؟

----------


## water_lily_2012

سلام
این روشی که شما فرمودید برای SQL Express عملی نیست؟
در هنگام Generate Database From Model من نوع پایگاه داده را SQL Server  DataBaseFile انتخاب کردم و در هنگام Execute Sql دچار خطا شد. البته خود  فایل .mdf را ساخت ولی جداول ایجاد نشد.

----------


## سوداگر

> این روشی که شما فرمودید برای SQL Express عملی نیست؟


این مطلب رو ایشون نفرموده بودن!
در همون پست اول ایشون گفت که مطالبی که اینجا میذاره رو از اون سایت می گیره! 
تقریبا میشه گفت که کپی پیست مطالب توی سایت هست. البته کپی پیست خیلی هم خوبه چون ایشون با شجاعت تمام لینک اصلی رو گذاشتن و مثل بعضی ها مطالب رو به اسم خودشون تموم نکردن.

----------


## water_lily_2012

سلام
دوست عزیز 
حالا چرا ناراحت می شوید. من اصلا کاری به اینکه ایشون نوشته اند یا لینک هست، ندارم. این هم که نوشتم " شما فرمودید" می خواستم در صحبت احترام گذاشته باشم.
من این تاپیک را خوندم و یک سوال برایم پیش آمد. هر کسی هم بلد هست لطف کنه جواب بده.
در ضمن من که یادم نمی یاد مطلبی را به نام خودم زده باشم که شما این مطلب را نوشته اید.

----------


## سوداگر

> در ضمن من که یادم نمی یاد مطلبی را به نام خودم زده باشم که شما این مطلب را نوشته اید.


اصلا قصد جسارت نداشتم :خجالت: .منظورم از بعضی ها، بعضییییها بود :گیج: 
این که یادآوری کردم که اون لینک اصلی مطالب هست منظورم این بود که این جا منتظر جواب موندن تقریبا بیهوده است، منم بیش از یک ماهه که سوال پرسیدم جوابی نشنیدم :ناراحت: 
امیدوارم سوء تفاهمی پیش نیومده باشه.

----------


## fakhravari

ادامه نداره پست؟

----------


## سوداگر

> ادامه نداره پست؟


همه اش همین بود

----------


## fakhravari

یه سمپل ندارید که چند جدول از این روش Inser , update , ... میشوند :خجالت:

----------


## hadi-z

سلام 
من تو پروژه ام از EF استفاده کردم ولی با یک مشکل مواجه شدم
بعد از اضافه کردن فایل edmx به پروژه وقتی اونو اجرا می کنم یه پیغام خطا میده:
Invalid token 'void' in class, struct, or interface member declaration

کسی میتونه منو راهنمایی کنه که چرا این ارور رو میده و راهکاری براش هست یا نه؟
پیشاپیش ممنون.

----------


## modern_amin

دوستان از این فناوری  جواب گرفتین...؟
مزیتش چیه؟
.
دوستان   سمپلی   دارین؟

----------


## jmfnima

با سلام به همه دوستان 
اگه بانک اطلاعاتی اکسس باشه آیا میشه از EF هم استفاده نمود ؟؟؟

----------


## محمدامین شریفی

با سلام.

من از EF و LAMBDA توی یک پروژه ی بزرگ تجاری به روش زیر استفاده کردم.

1) برای select از lambda استفاده کردم.
2) برای Create, Update, Delete از این روش استفاده کردم:
http://msdn.microsoft.com/en-us/libr...recommand.aspx
3) برای join های بزرگ هم از این روش استفاده کردم:
http://msdn.microsoft.com/en-us/library/bb387145.aspx




> با سلام به همه دوستان 
> اگه بانک اطلاعاتی اکسس باشه آیا میشه از EF هم استفاده نمود ؟؟؟


خیر، SQL 2005 به بالا.




> دوستان از این فناوری  جواب گرفتین...؟


بله، در یک پروژه ی WPF با داده های زیاد
در یک فروشگاه الکترونیک با asp.net




> مزیتش چیه؟


استفاده از LAMBDA و LINQ
تبدیل جداول به کلاس های #C



> دوستان   سمپلی   دارین؟


شما با Entity designer در مرحله اول، زیاد سر و کار ندارید، کار اصلی شما واکشی از EF است که با کمک LINQ یا LAMBDA این کار را انجام می دهید.
http://code.msdn.microsoft.com/101-L...mples-3fb9811b
برای تبدیل LINQ به LAMBDA از نرم افزار های زیر می شود استفاده کرد
http://www.linqpad.net
http://www.sqltolinq.com
اولین نرم افزار بهتر است.



> سلام 
> من تو پروژه ام از EF استفاده کردم ولی با یک مشکل مواجه شدم
> بعد از اضافه کردن فایل edmx به پروژه وقتی اونو اجرا می کنم یه پیغام خطا میده:
> Invalid token 'void' in class, struct, or interface member declaration
> 
> کسی میتونه منو راهنمایی کنه که چرا این ارور رو میده و راهکاری براش هست یا نه؟
> پیشاپیش ممنون.


 من به این خطا بر نخوردم، کل ENTITY را پاک کن و از دوباره از دیتا بیس بگیر.
اگر این کار عملی نیست، دلیلش را بگو تا من هم یاد بگیرم.



> یه سمپل ندارید که چند جدول از این روش Inser , update , ... میشوند


http://www.dotnetspark.com/kb/2737-e...perations.aspx

----------


## saeid taheri

با سلام
من در پرکردن گرید از Linq و EF استفاده می کنم ولی هنگامی که می خواهم روی هر کدام از ردیف های گرید کار کنم دچار مشکل می شوم ، کدهای برنامه در زیر است
        private void RefreshData()
        {
            DataContext.Context.Refresh(RefreshMode.StoreWins,  DataContext.Context.Persons);
            grdPersons.DataSource = (from p in DataContext.Context.Persons
                                     join pt in DataContext.Context.PersonType on p.PersonTypeID equals pt.PersonTypeID
                                     select new
                                                {
                                                    p.fName,
                                                    p.lName,
                                                    p.pName,
                                                    p.ShenasnameID,
                                                    p.Phone,
                                                    p.Mobile
                                                } ).ToList();
        }

        private void btnEdit_Click(object sender, EventArgs e)
        {
            if(grdPersons.SelectedRows.Count !=0)
            {
//در خط زیر اشکال دارم
                    Persons objPerson = (Persons)grdPersons.CurrentRow.DataBoundItem;
                    ShowEdit(objPerson, false);
            }
        }


       private void ShowEdit(Persons objPerson,bool addingPerson)
        {
            EditPersonForm objEditPersonFrom = new EditPersonForm();

            objEditPersonFrom.personsBindingSource.DataSource = objPerson;
            if (!addingPerson)
            {
                objEditPersonFrom.PersonID1 = objPerson.PersonID;
                objEditPersonFrom.imgPerson.ImageLocation = objPerson.Picture;
            }
            if (objEditPersonFrom.ShowDialog() == DialogResult.OK)
            {
                objPerson.Jensiat = objEditPersonFrom.cmbJens.Items[objEditPersonFrom.cmbJens.SelectedIndex].ToString();                
                objPerson.Picture = objEditPersonFrom.imgPerson.ImageLocation;
                objEditPersonFrom.personsBindingSource.EndEdit();
                if(addingPerson)
                    DataContext.Context.Persons.AddObject(objPerson);
                try
                {
                    DataContext.Context.SaveChanges();    
                }
                catch{}                
            }
            else
            {
                objEditPersonFrom.personsBindingSource.CancelEdit(  );
            }
            RefreshData();
        }

----------


## محمدامین شریفی

> با سلام
> من در پرکردن گرید از Linq و EF استفاده می کنم ولی هنگامی که می خواهم روی هر کدام از ردیف های گرید کار کنم دچار مشکل می شوم ، کدهای برنامه در زیر است
>         private void RefreshData()
>         {
>             DataContext.Context.Refresh(RefreshMode.StoreWins,  DataContext.Context.Persons);
>             grdPersons.DataSource = (from p in DataContext.Context.Persons
>                                      join pt in DataContext.Context.PersonType on p.PersonTypeID equals pt.PersonTypeID
>                                      select new
>                                                 {
> ...




            grdPersons.DataSource = (from p in DataContext.Context.Persons
                                     join pt in DataContext.Context.PersonType on p.PersonTypeID equals pt.PersonTypeID
                                      select new Person2
                                                {
                                                    p.fName,
                                                    p.lName,
                                                    p.pName,
                                                    p.ShenasnameID,
                                                    p.Phone,
                                                    p.Mobile
                                                } ).ToList();
        }

Person2 یه کلاس جدید است.

----------


## elhamkhodaei66

سلام ممنون از تاپیکی که گذاشتین 
فقط یه سوال داشتم اون هم اینکه زمانی که از Entity Framwork استفاده می کنیم دستورات پشت صحنه ای که اجرا می شوند کجا هستند ؟
مثلا وقتی که با یک دستور ما اطلاعاتی را به جدولی اضافه می کنیم دستورات پشت صحنه ای که این خط دستور ما رو می فهمه و اجر ا می کنه کجاست ؟
ممنون

----------


## actros

> سلام ممنون از تاپیکی که گذاشتین 
> فقط یه سوال داشتم اون هم اینکه زمانی که از Entity Framwork استفاده می کنیم دستورات پشت صحنه ای که اجرا می شوند کجا هستند ؟
> مثلا وقتی که با یک دستور ما اطلاعاتی را به جدولی اضافه می کنیم دستورات پشت صحنه ای که این خط دستور ما رو می فهمه و اجر ا می کنه کجاست ؟
> ممنون


تو پوشه App_Code یه فایل هم MoeelName.Designer.vb یا cs هست که همه کار ها رو انجام میده
تو خطی که اطلاعات جدید اضافه میکنی یه Break Point بذار ببینی 
هیچ وقت این فایل رو تغییر نده چون به محض آپدیت کردن مدل،تغییرات اعمالی از بین میره

----------


## علی اکبر

دوستان سلام
من از این روش استفاده کردم اما حالا برای نمایش نیاز به یه فیلد دارم که توضیح بر داده های داخل دیتابیس باشه مثلا اگه ای دی 0 بود بگه منقول واگه 1 بود بشه غیر منقول
باید حتما به مدلم اضافه کنم چون باید در گرید نمایش داده بشه 
توی مدل میشه فیلدهای از نوع scaler-navigation and complex اضافه کرد اما نمی دونم چجوری ازشون استفاده کنم وشرطم برارم که اتوماتیک پر بشه
ممنون

----------


## Roya.Rashidi

سلام . اگه من entity رو یاد بگیرم دیگه نیاز نیست ado.net یاد بگیرم . 
و اینکه linq هم همینه ؟؟

----------


## parvizwpf

اینکه لزوما گفته بشه که دیگه نیازی نیست اونها رو استفاده کنیم هم غلطه. چون گاهی باز نیاز به استفاده اونها در محیط و شرایطش ممکنه پیش بیاد.

----------


## Roya.Rashidi

> اینکه لزوما گفته بشه که دیگه نیازی نیست اونها رو استفاده کنیم هم غلطه. چون گاهی باز نیاز به استفاده اونها در محیط و شرایطش ممکنه پیش بیاد.


خب   اینا همشون در نهایت یه کار میکنن که . 
قابلیت هاشون مگه فرق داره >

----------


## imanx7

> خب   اینا همشون در نهایت یه کار میکنن که . 
> قابلیت هاشون مگه فرق داره >


برای تفهیم بهتر فناوری LinQ یا EF بهتره با مفاهیم ADO.net آشنایت نسبی داشته باشین

----------


## RezaBehrang

سلام یه سوال دارم

در Entity فرض کنید یک جدول به نام Test داریم

حالا من یک ردیف با فرمان زیر اضافه کردم

Entity EntObj = new Entity().Test.AddObject(TestObj);

خب اگه عبارت زیر رو اجرا کنم اطلاعات با SQL مثلا synce میشه و دیتابیس آپدیت

EntObj.savechange();

اما سوال من اینه که اگه بخوام قبل از آپدیت کردن دیتابیس از آبجکتهای اضافه شده بصورت موقت در حافظه کوئری بگیرم یا احیانا تغییرشون بدم باید چکار کنم؟

----------

