PDA

View Full Version : حرفه ای: change table در زمان اجرا | استفاده جداگانه از مدل یک تیبل برای تیبل مشابه (Entity Framework)



youngold
پنج شنبه 16 خرداد 1392, 02:11 صبح
میخوایم یک entity تایپ رو برای تیبلی جز اونکه براش ساخته شده رو در زمان اجرا داشته باشیم ، یک تیبل با همون فیلد ها و ویژگی ها ، فقط اسمش متفاوت هست
حالا یا به عنوان چنج تیبل یا استفاده جداگانه ازون entity model :چشمک:
چیکار باید کرد به نظر شما؟

parvizwpf
پنج شنبه 16 خرداد 1392, 02:14 صبح
خیلی کلی و نامفهوم توضیح دادی. بهتر بیان کن لطفا.

youngold
پنج شنبه 16 خرداد 1392, 02:20 صبح
خیلی واضح بیان کردم
به عبارتی دیگر مدلی که برای یک تیبل ساخته شده برای تیبل های مشابه دیگه هم قابل استفاده باشه البته در زمان اجرا (dynamic)

parvizwpf
پنج شنبه 16 خرداد 1392, 02:25 صبح
منطورت از تیبلهای مشابه چیه؟ یعنی تو جداول دیگه این پروپرتی ها تکرار شدن؟

youngold
پنج شنبه 16 خرداد 1392, 02:27 صبح
تقریباً منظور بنده همین بوده

parvizwpf
پنج شنبه 16 خرداد 1392, 02:41 صبح
جسارتا حالا منظورتون برای این کار چیه برای اینکه هنوزم نمیدونم چرا اینو میخواید انجام بدید؟

youngold
پنج شنبه 16 خرداد 1392, 02:51 صبح
خواهش میکنم، به نظرم خیلی میتونه مورد توجه باشه جای توضیح نداره

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

برای مثال در نظر بگیرین از entity model استفاده کردید و اسم تیبل در زمان اجرا عوض میشه اینجا میخواید چیکار کنید؟ اگر در ado.net بود اسم تیبل رو در کوئری ها متغییر میکردید ولی اینجا چطور؟

youngold
پنج شنبه 16 خرداد 1392, 11:10 صبح
up it.............

Hajivandian
پنج شنبه 16 خرداد 1392, 12:44 عصر
سلام،

برای اطلاع خودم میخوام بدونم؛ میشه بگی چرا در زمان اجرا اسم یه جدول ممکنه عوض بشه!؟ این عمل چه کاربردی میتونه داشته باشه ؟

youngold
پنج شنبه 16 خرداد 1392, 12:50 عصر
همکار عزیز، این قضیه اصلاً شخصی نیست که راجع به علتش سوال میشه


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

شما خودتون در نظر بگیرید اسم جدول در یک ایکس ام ال تعیین شده که در زمان اجرا خونده میشه ، اینجا اگر اسم جدول رو بخواید در زمان اجرا ست کنید چیکار میکنید؟

programer97
پنج شنبه 16 خرداد 1392, 13:19 عصر
سلام دوست عزیز
این نظر بنده است که ممکنه ناقص باشه .اگه اشتباه می کنم شما اصلاح کنید.
Entity روشی ایه واسه این که ما بتونیم با جداول و دیگر اجزاء بانک اطلاعاتی مانند یک شی رفتار کنیم.
و بتونیم از مدل شی گرا واسه اون استفاده کنیم .
قبل از اینکه از Entity استفاده بشه برای اینکه با جداول ماننذ شی رفتار بشه برنامه نویس خودش میومد یک کلاس می نوشت و بوسیله کلاسش با جدول ارتباط برقرار می کرد.من نمیدونم این امکان داخل Entity هست یا نه ولی میدونم بخوای میتونی بانک های موجودت رو با Entity مدیریت کنی و بانکهایی رو که در زمان اجرا می خوای بصورت پویا مدیریت کنی با یه کلاس این کارو بکن.
یهنی یک کلای بنویس و بوسیله متغیر ها ، فیلد های بانک اطلاعاتیت رو ذخیره و روی بانک های موجود درج کنی.

youngold
پنج شنبه 16 خرداد 1392, 13:25 عصر
سلام دوست عزیز
این نظر بنده است که ممکنه ناقص باشه .اگه اشتباه می کنم شما اصلاح کنید.
Entity روشی ایه واسه این که ما بتونیم با جداول و دیگر اجزاء بانک اطلاعاتی مانند یک شی رفتار کنیم.
و بتونیم از مدل شی گرا واسه اون استفاده کنیم .
قبل از اینکه از Entity استفاده بشه برای اینکه با جداول ماننذ شی رفتار بشه برنامه نویس خودش میومد یک کلاس می نوشت و بوسیله کلاسش با جدول ارتباط برقرار می کرد.من نمیدونم این امکان داخل Entity هست یا نه ولی میدونم بخوای میتونی بانک های موجودت رو با Entity مدیریت کنی و بانکهایی رو که در زمان اجرا می خوای بصورت پویا مدیریت کنی با یه کلاس این کارو بکن.
یهنی یک کلای بنویس و بوسیله متغیر ها ، فیلد های بانک اطلاعاتیت رو ذخیره و روی بانک های موجود درج کنی.

این جواب من نبود ، من هم مبتدی نیستم
وقتی عنوان تاپیک حرفه ای هست یعنی از همه این ها اطلاع دارم و فقط و فقط میخوام بدونم راهی برای این مسئله در entity هست یا نه ! اگر میخواستم کلاس بنویسم و از entity استفاده نمیکردم دیگه خودم میدونستم باید چکار کنم ، نخوندی راجع به ado .net گفتم خودم؟!

youngold
پنج شنبه 16 خرداد 1392, 13:38 عصر
برای درک بهتر، اگر یادتون باشه در linq-sql هم همین مسئله بود
تاپیک مشابه :
http://barnamenevis.org/showthread.php?391081-%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1-%D9%86%D8%A7%D9%85-Table-%D8%AF%D8%B1-%D8%B2%D9%85%D8%A7%D9%86-%D8%A7%D8%AC%D8%B1%D8%A7-%D8%AF%D8%B1-linq


به نوعی اگر بشه فقط در اسم تیبل موجود در اس کیو ال کوئری هایی که entity تولید میکنه دست برد ، چون schema جدول یکسان هست

youngold
پنج شنبه 16 خرداد 1392, 13:48 عصر
همون طور که میدونید در entity چنج دیتابیس داریم اما جای چنج تیبل خالیست، به نظر شما چرا؟ چرا نباید از مدل یک تیبل که schema یکسانی با یک تیبل دیگه داره استفاده کرد؟

youngold
پنج شنبه 16 خرداد 1392, 21:32 عصر
up............

youngold
جمعه 17 خرداد 1392, 19:50 عصر
?no comment

mo.esmp
شنبه 18 خرداد 1392, 12:50 عصر
- جلوگیری میکنه از ساخت مدل های متعدد برای تیبل هایی که ساختارشون یکسان هست

برای جلوگیری از ساخت مدلهای متعدد که ساختارشون یکسان هست باید از ارس بری استفاده کنید. خوشبختانه EF ارس بری رو به خوبی پشتبانی میکنه. شما یک کلاس والد میسازید که شامل Propertyهای مشترک هست و برای مدلهای دیگه که تو چند Property با هم اختلاف دارن برای هر کدوم یک کلاس جدید میسازید که از کلاس والد ارس بری میکنند و ففت شامل Propertyهای مختس به خودشون هستند. حالا با این توزیح کلی بریم سراغ مورد شما.
اگه شما هم مسل تاپیکی که بهش اشاره کردین تغيير نام Table در زمان اجرا در linq (http://barnamenevis.org/showthread.php?391081-%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1-%D9%86%D8%A7%D9%85-Table-%D8%AF%D8%B1-%D8%B2%D9%85%D8%A7%D9%86-%D8%A7%D8%AC%D8%B1%D8%A7-%D8%AF%D8%B1-linq)، دارید اتلاعات رو آرشیو میکنید باید چندین جدول رو به یک Entity مشترک Map کنید. برای توزیحات بیشتر Inheritance in the Entity Framework (http://blogs.msdn.com/b/adonet/archive/2007/03/15/inheritance-in-the-entity-framework.aspx) رو بخونید. برای انجام ارس بری در EF ٣ رویکرد وجود داره: Table per Hierarchy، Table per Type و Table per Concrete Type که شما از Table per Concrete Type استفاده کنید.
EF Designer - Map an Entity to Multiple Tables (Entity Splitting) (http://msdn.microsoft.com/en-us/data/jj715646.aspx)