نظرات مطالب
ممنونم از راهنماییتون.
با این کار فایل Configuration ایجاد میشه ولی اون فایل دوم ایجاد نمیشه . وقتی بقیه دستورات رو هم اجرا میکنم(Update-datebase و ...) هم خطای
An error occurred while getting provider information from the database. This can be caused by Entity Framework using an incorrect connection string. Check the inner exceptions for details and ensure that the connection string is correct.
رو میده .
تو فایل app.config ،هم Connection string رو اضافه کردم ولی باز هم همین خطا رو میده!
Today, we’re excited to introduce GitHub Package Registry, a package management service that makes it easy to publish public or private packages next to your source code.
GitHub Package Registry is fully integrated with GitHub, so you can use the same search, browsing, and management tools to find and publish packages as you do for your repositories. You can also use the same user and team permissions to manage code and packages together. GitHub Package Registry provides fast, reliable downloads backed by GitHub’s global CDN. And it supports familiar package management tools: JavaScript (npm), Java (Maven), Ruby (RubyGems), .NET (NuGet), and Docker images, with more to come.
مقدمه:
بعضی وقتها به هر دلیلی لازم است پایگاه داده برنامه هایمان را به سرور دیگری انتقال دهیم . برخلاف Oracle که انتقال پایگاه داده به سرور دیگر کار مشکل و تخصصی میباشد در SQL Server براحتی با یک Detach و Attach مجدد این انتقال انجام خواهد شد. اما اطلاعات Logins در پایگاه داده Master سرور ذخیره شده است و با فایل پایگاه داده انتقال نمییابد و به هیمن خاطر برخی مواقع پس از Attach پایگاه داده با پیغام The database is not accessible یا Cannot open user default database مواجع خواهیم شد که مشکل بخاطر همین نبود کاربران سرور قبلی و Owner متفاوت پایگاه داده میباشد که با استفاده از رویه ذخیره شده sp_change_users_login این مشکل قابل حل میباشد اما در SQL Server 2012 راحل بهتری فراهم شده است.Contained Databases در Sql Server 2012
یکی از امکانات اضافه شده در SQL Server 2012 امکان Contained Databases هست که برای حل همین مشکل و رفع کامل وابستی پایگاه داده با Instance نصب شده و خاصیت قابل حمل کامل databaseها میباشد. در ادامه نحوه استفاده از این امکان را بررسی خواهیم کرد:
- فعال کردن خاصیت Contained Databases
قبل از استفاده از Contained Databases می بایست این امکان را فعال کرد. برای این کار میتوانید از SQL Server Management Studio یا T-SQL commands استفاده نمایید. بر روی نام Instance راست کلیت کنید و گزینه Properties را انتخاب نمایید. از گزینه Advanced که در شکل زیر مشاهده مینمایید خاصیت Enable Contained Databases را بر روی True قرار دهید.
یا میتوایند از sp_configure این کار را انجام دهید.دستورات زیر این موضوع را نشان میدهد.
sp_configure 'show advanced options',1 GO RECONFIGURE WITH OVERRIDE GO sp_configure 'contained database authentication',1 GO RECONFIGURE WITH OVERRIDE GO
- ایجاد یا تغییر یک پایگاه داده از نوع Contained Databases
برای ایجاد یک پایگاه داده با این خاصیت یا تغییر پایگاه داده موجود کافیست مقدار گزینه Containment type را بر روی Partial قرار دهید. برای پایگاه داده موجود از پنجره Properties پایگاه داده صفحه Options را انتخاب کنید.
- ایجاد یک کاربر برای پایگاه داده Contained Databases
برای تعریف یک کاربر در سطح پایگاه داده پوشه Security پایگاه داده خود را باز کنید بر روی پوشه Users راست کیلک و گزینه New User را انتخاب نمایید از گزینه User type که در شکل زیر نشان داده شده است SQL user with password را انتخاب نمایید و نام کاربر و رمز عبور و تکرار آن را وارد نمایید. کاربر ایجاد شده در سطح پایگاه داده میباشد و با انتقال به سرور دیگر نیر قابل دسترسی میباشد.
- اتصال به پایگاه داده Contained Databases
برای اتصال به پایگاه داده کافیست در حالت SQL Server Authentication نام کاربری و رمز عبور جدید را وارد و گزینه Options را انتخاب و از برگه Additional Connection Parameters نام پایگاه داده مورد نظر را مانند شکل زیر وارد نمایید پس از ورود تنها پایگاه داده خود را مشاهده مینمایید. یکی از کاربرهای این قابلیت برای مدیران سرور پایگاه داده میباشد که بدون استفاده از مجوز sysadmin به کاربران اجازه دسترسی را میدهد.
اغلب در حین Bind کردن Propertyها در XAML به مشکل Bind نشدن بر میخوریم. من معمولا از روش زیر استفاده میکنم:
و در XAML :
و حال دو حالت میتواند اتفاق بیفتد :
1 - Break Point Hit نمیشود:
در این حالت مقدار myViewModel خالی (null) است و یا اصلا myViewModel در DataContext مربوط به DataGrid وجود ندارد در این صورت همچنین در پنجره Out Put Visual Studio:
و با search متن "System.Windows.Data Error: 35 : BindingExpression path error:" در Out Put میتوان متوجه آن شد.
2 - Break Point Hit میشود:
در این حالت باید value را Watch کنیم (Shift+F9) تا ببینیم علت Bind نشدن چیست؟ شاید (در این مورد خاص) نوع myViewModel از IEnumerable نباشد ...
در حین بررسی و Debug ، شاید گاهی مسئاله لاینحل به نظر برسد ، ولی به نظر من معمولا با کم و زیاد کردن آدرس (Binding (Path به یکی از دو حالت بالا خواهیم رسید ،
مثلا زمانی که Path به صورت myViewModel.MyProperty.MyInnerPtoperty است ، باید Path را با حالات زیر توسط Converter مذکور تست کنیم:
امیدوارم از Binding تان لذت ببرید.
public class DatabindingDebugConverter : IValueConverter { #region IValueConverter Members public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { Debugger.Break(); return value; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { Debugger.Break(); return value; } #endregion IValueConverter Members }
<DataTemplate.Resources> <debug:DatabindingDebugConverter x:Key="databindingDebugConverter"/> </DataTemplate.Resources> <DataGrid ItemsSource="{Binding myViewModel,Converter={StaticResource databindingDebugConverter}}" />
1 - Break Point Hit نمیشود:
در این حالت مقدار myViewModel خالی (null) است و یا اصلا myViewModel در DataContext مربوط به DataGrid وجود ندارد در این صورت همچنین در پنجره Out Put Visual Studio:
System.Windows.Data Error: 35 : BindingExpression path error: ‘X’ property not found ...
2 - Break Point Hit میشود:
در این حالت باید value را Watch کنیم (Shift+F9) تا ببینیم علت Bind نشدن چیست؟ شاید (در این مورد خاص) نوع myViewModel از IEnumerable نباشد ...
در حین بررسی و Debug ، شاید گاهی مسئاله لاینحل به نظر برسد ، ولی به نظر من معمولا با کم و زیاد کردن آدرس (Binding (Path به یکی از دو حالت بالا خواهیم رسید ،
مثلا زمانی که Path به صورت myViewModel.MyProperty.MyInnerPtoperty است ، باید Path را با حالات زیر توسط Converter مذکور تست کنیم:
Binding"{Path=myViewModel.MyProperty.MyInnerPtoperty ,Converter="{StaticResource debugger}}" Binding"{Path=myViewModel.MyProperty,Converter="{StaticResource debugger}}" Binding"{Path=myViewModel,Converter="{StaticResource debugger}}" Binding"{Path=.,Converter="{StaticResource debugger}}"
امیدوارم از Binding تان لذت ببرید.
اشتراکها
NET 7.0.201. منتشر شد
اشتراکها