خطای The context is being used in Code First mode with code در انتیتی فریم ورک
من از WPF سی شارپ Entity Framework برای یک برنامه اتصال به دیتابیس استفاده میکنم
حالا بخش تنظیم پارامتر های اتصال به سرور و دیتابیس رو دارم
اول
این Connection String من هستش :
string MyConnectionString =
metadata = res://*/DataModelBDGT.csdl|res://*/DataModelBDGT.ssdl|res://*/DataModelBDGT.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=DENAF1399;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName = System.Data.EntityClient
که دقیقا مطابق همونی هست که توی فایل app.config هست البته من کانکشن استریگ توی فایل app.config رو پاک کردم فقط برای اینکه ببینید ↓ :
<!--<connectionStrings>
<add name="DENAF1399Entities" connectionString="metadata = res://*/DataModelBDGT.csdl|res://*/DataModelBDGT.ssdl|res://*/DataModelBDGT.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=DENAF1399;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
From Code Behind : metadata = res://*/DataModelBDGT.csdl|res://*/DataModelBDGT.ssdl|res://*/DataModelBDGT.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=DENAF1399;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName = System.Data.EntityClient
</connectionStrings>-->
حالا توی این رویداد کلیک سی شارپم کانکشن استرینگ رو دادم :
DENAF1399Entities dbms = new DENAF1399Entities(MyConnectionString);
//َیک کویری جهت تست و اطمینان
var test = dbms.Database.SqlQuery<string>("SELECT TOP 1 * FROM MyDB").First();
اما در زمانی که به اجرای این کویری تستی میرسه این خطا رو میده :
System.Data.Entity.Infrastructure.UnintentionalCodeFirstException: 'The context is being used in Code First mode with code that was generated from an EDMX file for either Database First or Model First development. This will not work correctly. To fix this problem do not remove the line of code that throws this exception. If you wish to use Database First or Model First, then make sure that the Entity Framework connection string is included in the app.config or web.config of the start-up project. If you are creating your own DbConnection, then make sure that it is an EntityConnection and not some other type of DbConnection, and that you pass it to one of the base DbContext constructors that take a DbConnection. To learn more about Code First, Database First, and Model First see the Entity Framework documentation here: http://go.microsoft.com/fwlink/?LinkId=394715'
توی اینترنت که بررسی کردم میگن فرمت کانکشن استرینگ برای EntityFramework باید درست باشه ولی هرچی برسیش کردم عین همون توی app.config هستش
چطوری این مورد رو حل کنم ؟
باتشکر
پاسخ هوش مصنوعی
برای حل مشکل "The context is being used in Code First mode with code that was generated from an EDMX file"، چند نکته را بررسی کنید:
1. **اطمینان از نوع Context**: مطمین شوید که `DENAF1399Entities` درست به عنوان یک `DbContext` از EDMX ایجاد شده است. اگر شما در حال استفاده از Code First هستید، باید اطمینان حاصل کنید که فقط از آن استفاده می کنید.
2. **استفاده از Connection String**: از آنجا که شما Connection String را در فایل app.config کامنت کرده اید، این باعث می شود که Entity Framework نتواند به درستی به Database متصل شود. شما نیاز دارید که Connection String را فعال کنید یا از یک نوع اتصال صحیح استفاده کنید. اگر می خواهید از Connect String در کد استفاده کنید، مطمین شوید که نوع آن `EntityConnection` باشد.
3. **تعریف Connection String در App.config**: پیشنهاد می شود که Connection String را به فایل app.config برگردانید، به این صورت:
<connectionStrings>
<add name="DENAF1399Entities"
connectionString="metadata=res://*/DataModelBDGT.csdl|res://*/DataModelBDGT.ssdl|res://*/DataModelBDGT.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=DENAF1399;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
4. **استفاده از سازنده مناسب**: اگر قصد دارید Connection String را در کد بدهید، باید از سازنده ای استفاده کنید که `DbConnection` را قبول کند و اتصال را به صورت EntityConnection تنظیم کنید. به عنوان مثال:
using System.Data.Entity.Core.EntityClient;
string MyConnectionString = "metadata=res://*/DataModelBDGT.csdl|res://*/DataModelBDGT.ssdl|res://*/DataModelBDGT.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=DENAF1399;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"";
EntityConnection entityConnection = new EntityConnection(MyConnectionString);
DENAF1399Entities dbms = new DENAF1399Entities(entityConnection);
این تغییرات به شما کمک می کند تا از خطای مربوطه جلوگیری کنید.
دقت کنید که کانکشن استرینگ با توجه به نوع استفاده و تکنولوژی مورد استفاده ممکنه تغییر کنه. به صورت استاندارد برای استفاده در کدهای سی شارپ رشته اتصال به صورت زیر هست و خود انتیتی فریم ورک هم فرمت Connection String مخصوص به خودش رو داره.
کانکشن استرینگ به صورت استاندارد :
Server = (local); Database = DB; User Id = sa ;Password = ***
کانکشن استرینگ مخصوص انتیتی فریم ورک:
metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=test\test;initial catalog=DB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""" providerName = ""System.Data.EntityClient
خب حالا اگر شما میخواید نحوه اتصال به دیتابیس رو تغییر بدید باید دقت کنید که از فرمت صحیح استفاده کنید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- حذف کامل یک رکورد در جدول ریلیشن شده
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf