PDA

View Full Version : یه مشکل کوچیک با Entity Framework



jalil_m
شنبه 26 فروردین 1391, 20:16 عصر
1-یه تیکه کد نوشتم که که یه سری رکورد رو تو دیتابیس مینویسه.و بعد وقتی سلکت میکنم همه چی درست کار میکنه
اما وقتی برنامه را دوباره بیلد میکنم تمام اطلاعات دیتابیس برمیگرده به حالت قبل انگار چیزی عوض نشده.
ضمنا بخش copy to output directory دیتابیس رو رو حالت copy always گذاشتم.حدس میزنم مشکل از همین باشه اما وقتی رو حالت do not copy میذارم موقع اجرا اررور میده و میگه فایل دیتابیس پیدا نشد
فایلش هم در پوشه debug گذاشتم و آدرسش رو هم در connection string به پوشه دیباگ برنامه دادم.

2-من فایل Model.designer.cs را طوری که میخوام تغییر دادم.اما وقتی مدل رو آپدیت میکنم همه کدها برمیگرده به حالت اول.یکار کنم که با آپدیت کردن مدل کدی که تغییر دادم به حالت اول برنگرده؟

ممنونم اگر کسی اطلاعاتی داره کمکم کنه.کارم گیره

p.yazdkhasti
شنبه 26 فروردین 1391, 23:10 عصر
سلام دوست عزیز
1- در ارتباط با سوال اول شما باید بگویم که به دلیل این که از SQL Express استفاده می کنید و فایل DB را در Solution خود قرار داده اید به صورت پیش فرض با هر بار Build و Debug برنامه فایل دیتا بیس از فایل های پروژه به فولدر Debug کپی می شود. ساده ترین راه حل این است که فایل DB را از Solution خود در VS حدف کنید. حذف از Soloution به معنای Delete کردن کامل فایل نیست و تنها از Solution حذف می شود.
2- شما به هیچ وجه نباید فایل Model.designer.cs را تغییر دهید بلکه همان طور که قبلا در پست های قبلی به شما پاسخ داده ام یک راه حل این است که یک کلاس Partial با نام Entity مورد نظر که می خواهید آن را Extend نمایید ایجاد نمایید و Logic خود را در آن قرار دهید.

jalil_m
شنبه 26 فروردین 1391, 23:49 عصر
ممنون دوست عزیز
منظور از حدف از سولوشن اینه که Exclude from project کنم دیگه؟

jalil_m
شنبه 26 فروردین 1391, 23:56 عصر
همین کار را کردم اما موقع runtime این ارور رو میده :

The underlying provider failed on Open

p.yazdkhasti
یک شنبه 27 فروردین 1391, 09:41 صبح
سلام
بله منظور همان Exclude from project می باشد. مشکل The underlying provider failed on Open نیز به دلیل مشکل در ارتباط با پایگاه داده است و به منظور بررسی آن باید Connection String و سرویس SQL Server Express را بررسی نمایید. در صورت امکان در صورت حل نشدن مشکل Connection String را برای اینجانب ارسال نمایید.

jalil_m
یک شنبه 27 فروردین 1391, 09:42 صبح
سلام اینم connection string

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="avdataEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\avdata.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>

p.yazdkhasti
یک شنبه 27 فروردین 1391, 09:48 صبح
سلام
چک کنید که آیا فایل دیتابیس در فولدر Debug وجود دارد یا خیر. به این نکته دقت کنید که تنها اگر Build Configuration شما Debug باشد فایل اجرایی برنامه در فولدر Debug کپی می شود در غیر این صورت در فولدر Release کپی می شود.

jalil_m
یک شنبه 27 فروردین 1391, 09:56 صبح
فایل دیتابیس رو دستکاری نکردم.البته در فولدر دیباگ نیست
در کنار فایل اجرایی برنامه است.آدرسش در conn string هم کنار فایل اجرایی دادم
85781

اینم عکسش.آخه وقتی دیتابیس رو include میکنم تو پروژخ مشکل این ارور حل میشه

jalil_m
یک شنبه 27 فروردین 1391, 09:58 صبح
ضمنا build config هم روی release قرار داره

p.yazdkhasti
یک شنبه 27 فروردین 1391, 10:01 صبح
سلام
باید در فولدر Debug قرار دهید زیرا منظور از Data Directory در Connection String همان فولدری است که فایل اجرانی نرم افزار در آن قرار دارد و در هنگام Debug کردن فولدر Debug می باشد. دلیل اینکه با Include کردن مشکل حل می شود این است که VS در هنگام Debug فایل موجود در Soloution را در فولدر Debug کپی می کند. در صورتی که نمی خواهید فایل را در فولدر Debug قرار دهید آدرس فایل در Connection String را برای تست به صورت کامل بنویسید برای مثال "C:\CPL\avdata.mdf"

p.yazdkhasti
یک شنبه 27 فروردین 1391, 10:02 صبح
سلام
از آنجایی که Build Config بر روی Release است باید فایل را نیز در فولدر Release کپی نمایید در صورتی که می خواهید حتما از عبارت Data Directory در Con String خود استفاده نمایید.

jalil_m
یک شنبه 27 فروردین 1391, 17:43 عصر
بله دوست عزیز.ممنونم از راهنمایی شما.مشکل حل شد.خیر از جوونیت ببینی