نظرات مطالب
EF Code First #1
- نکته مهم: اگر از طریق management studio بانک اطلاعاتی مدنظر را باز کردهاید، برنامه امکان کارکردن با آنرا جهت اعمال migrations ندارد. اتصال خودتان را قطع کنید و بعد امتحان کنید.
- در صفحه تعریف لاگین جدید در SQL Server روی دکمهی جستجو کلیک نکنید. این کاربر را تشخیص نمیدهد. به همین نحوی که عنوان شده، آنرا وارد کنید و تائید کنید؛ کار میکند.
- در این رشتهی اتصالی که نوشتید، به نظر یک «;» فراموش شدهاست:
بعد از دات، یک ; نیاز است.
- این رشته را هم امتحان کنید:
- در صفحه تعریف لاگین جدید در SQL Server روی دکمهی جستجو کلیک نکنید. این کاربر را تشخیص نمیدهد. به همین نحوی که عنوان شده، آنرا وارد کنید و تائید کنید؛ کار میکند.
- در این رشتهی اتصالی که نوشتید، به نظر یک «;» فراموش شدهاست:
Server=. Database=kashanSchools;Trusted_Connection=True;
- این رشته را هم امتحان کنید:
Data Source=(local);Initial Catalog=kashanSchools;Integrated Security = true
Here’s a summary of what’s new in this preview release:
- Request decompression middleware
- Output caching middleware
- Updates to rate limiting middleware
- Kestrel support for WebSockets over HTTP/2
- Kestrel performance improvements on high core machines
- Support for logging additional request headers in W3CLogger
- Empty Blazor project templates
- System.Security.Cryptography support on WebAssembly
- Blazor custom elements no longer experimental
- Experimental
QuickGrid
component for Blazor - gRPC JSON transcoding multi-segment parameters
-
MapGroup
support for more extension methods
Jon P. Smith, author of Entity Framework Core in Action, explains what a multi-tenant app is and then digs into the things you need to do to make a multi-tenant app using ASP.NET Core with EF Core.
00:00 Countdown
02:19 Introduction and Community Links
18:25 What are multi-tenant web applications?
21:14 Single level multi-tenant demo
29:00 Partitioning tenants with EF Core QueryFilter
38:00 Admin features: creating users and tenants
43:00 Q&A
43:00 Hierarchical multi-tenant
59:00 How to get started
1:06:30 Database sharding and connection string management
1:16:30 Scaling with Azure SQL Elastic Pools
1:19:00 Conclusion
با بالا رفتن تعداد اشیاء تعریف شده در SQL server ، نگهداری آنها نیز مشکلتر میشود. در این حالت تغییر کوچکی در یکی از اشیاء ممکن است باعث از کار افتادن قسمتی از سیستم شود. بنابراین قبل از هر گونه تغییری در یک شیء، ابتدا باید سایر اشیاء وابسته به آن را یافت و در نظر داشت ( dependencies ). برای این منظور ( impact analysis ) راهکارهای مختلفی در SQL server وجود دارد که در ادامه به آنها خواهیم پرداخت:
الف) استفاده از امکانات management studio (اس کیوال سرور 2005 به بعد)
سادهترین راه ممکن که گزارش مفصلی را نیز ارائه میدهد، کلیک بر روی یک شیء در management studio و انتخاب گزینه view dependencies است (شکل زیر).
در صفحه ظاهر شده میتوان اشیایی را که شیء مورد نظر به آنها وابسته است، مشاهده نمود یا برعکس (اشیایی که عملکرد آنها وابسته به شیء انتخابی است را نیز میتوان ملاحظه کرد).
ب) کوئری گرفتن از جداول سیستمی
امکانات قسمت قبل را با استفاده از اطلاعات جدول syscomments نیز میتوان شبیه سازی کرد. در این جدول اطلاعات تعاریف کلیه view ، trigger ، رویههای ذخیره شده و غیره نگهداری میشود. برای مثال فرض کنید قصد داریم در جدول Orders دیتابیس Northwind ، نام فیلد OrderDate را تغییر دهیم. قبل از اینکار بهتر است کوئری زیر را اجرا کنیم تا نام اشیاء وابسته را بدست آوریم:
SELECT NAME
FROM syscomments c
JOIN sysobjects o
ON c.id = o.id
WHERE TEXT LIKE '%OrderDate%'
AND TEXT LIKE '%Orders%'
این روش انعطاف پذیری بیشتری را نسبت به امکانات قسمت الف ، ارائه میدهد. برای نمونه فرض کنید میخواهید در یک دیتابیس کلیه اشیایی که عملیات delete را انجام میدهند پیدا کنید (جستجوی اشیاء حاوی یک عبارت خاص). در این مورد خواهیم داشت:
SELECT NAME
FROM syscomments c
JOIN Northwind.dbo.sysobjects o
ON c.id = o.id
WHERE TEXT LIKE '%delete%'
جدول سیستمی دیگری در اس کیوال سرور به نام sysdepends وجود دارد که اطلاعات وابستگیهای اشیاء در آنها نگهداری میشود. برای دسترسی به اطلاعات این جدول ، اس کیوال سرور رویه ذخیره شده سیستمی sp_depends را ارائه داده است. برای مثال فرض کنید میخواهیم لیست اشیایی را که به جدول Oredres دیتابیس Northwind وابسته هستند، پیدا کنیم. در این حالت داریم:
USE Northwind
EXEC sp_depends 'Orders'
د) استفاده از schema view
با استفاده از view سیستمی INFORMATION_SCHEMA.ROUTINES ، که از ترکیب جداول syscolumns و sysobjects ایجاد شده است نیز میتوان عملکرد sp_depends را شبیه سازی کرد اما جداول و view ها از گزارش آن حذف شدهاند.
SELECT routine_name,
routine_type
FROM INFORMATION_SCHEMA.ROUTINES
WHERE routine_definition LIKE '%Orders%'
ه) استفاده از برنامه SQL Dependency Tracker
نسخه آزمایشی برنامه ذکر شده را از این آدرس میتوان دریافت کرد.
همانطور که ملاحظه میکنید این جستجوها بر روی اطلاعات ذخیره شده در اس کیوال سرور صورت میگیرند و اگر در کدهای خود در خارج از اس کیوال سرور مخلوطی از عبارات اس کیوال را داشته باشید، نگهداری آنها بسیار مشکل خواهد بود. بنابراین تا حد ممکن باید عملیات مرتبط را در دیتابیس و توسط اشیاء اس کیوال سرور مانند رویههای ذخیره شده، view ها و امثال آنها انجام داد تا این جدا سازی بهخوبی صورت گرفته و در زمان نیاز به انجام تغییرات، ردگیری اشیاء وابسته بهسادگی صورت گیرد.
اشتراکها
معرفی NET Framework 4.6.2 Preview.
افزونهای برای SQL server 2005 به نام Database Publishing Wizard وجود داشت/دارد که توسعهی آن به ظاهر برای SQL server 2008 متوقف شده است. توسط این افزونه میتوان رکوردهای یک دیتابیس را به صورت عبارات T-SQL درآورد (هر رکورد را به صورت خودکار تبدیل به یک دستور insert میکند). به این صورت کار انتقال دیتا خصوصا به هاستهایی که دسترسی مستقیم restore کردن داده را نمیدهند، به سادگی صورت میگیرد. تنها کافی است خروجی کار یکبار بر روی دیتابیس مقصد اجرا شود تا رکوردهایی دقیقا با همان اطلاعات دیتابیس منبع در آن ایجاد گردند.
این قابلیت اکنون جزئی از management studio اس کیوال سرور 2008 است.
برای استفاده از آن بر روی دیتابیس مورد نظر در management studio 2008 کلیک راست کرده و گزینه زیر را انتخاب کنید:
Tasks -> Generate scripts…
در صفحه ویزاردی که ظاهر میشود، بر روی next کلیک کرده و در صفحهی بعدی گزینه script data را یافته و مقدار آنرا به true تنظیم نمائید (شکل زیر).
سپس بر روی next کلیک کرده و در صفحه بعد گزینه tables را انتخاب کنید. در ادامه با کلیک بر روی دکمه next ، در صفحهی بعدی میتوان تمامی جداول و یا تنها جداول مورد نظر را جهت تهیه اسکریپت دادههای آنها انتخاب نمود و در آخر عملیات تهیه اسکریپت insert دادهها به صورت خودکار صورت خواهد گرفت.
برای مشاهده تصاویر بیشتری از این عملیات ساده میتوان به این مقاله رجوع نمود.
شایان ذکر است این قابلیت با نگارشهای پائینتر اس کیوال سرور نیز کار میکند (برای مثال اتصال به اس کیوال سرور 2000 از طریق management studio 2008).
Identity یکی از Attributeهایی که در SQL Server به ازای Columnهای عددی میتوان در نظر گرفت. به طور خیلی ساده هنگامی که این Attribute به ازای یک فیلد عددی تنظیم گردد. چنانچه رکوردی در جدول مربوط به Identity درج شود فیلد Identity مقداری را به طور اتوماتیک دریافت خواهد نمود.
نحوه دریافت مقدار به ازای فیلد Identity با توجه به آخرین مقدار آن و گام افزایش است که در هنگام ایجاد identity تعریف میگردد.
برای ایجاد یک فیلد از نوع Identity میتوانید زمانیکه جدول خود را ایجاد میکنید این Attribute را به فیلد مورد نظر خود تخصیص دهید.
مثال 1 : این مثال نحوه ایجاد یک فیلد از نوع Identity را نمایش میدهد.
USE tempdb GO CREATE TABLE Customers1 ( ID INT IDENTITY,-- ID INT IDENTITY(1,1) Name NVARCHAR(100), [Address] NVARCHAR(200) ) GO
همانطور که در مثال 1 مشاهده میکنید فیلد ID از نوع Identity تعریف شده است. در این حالت (ID int IDENTITY) مقدار شروع و گام افزایش به ازای این فیلد 1 در نظر گرفته خواهد شد. در این صورت اگر چند رکورد زیر را به ازای این جدول درج کنید. مقدار Identity به صورت زیر خواهد بود.
INSERT INTO Customers1 (Name,[Address]) VALUES (N'مسعود',N'میانه'), (N'فرید',N'میانه'), (N'احمد',N'میانه') GO SELECT * FROM Customers1
مثال 2 : این مثال نحوه ایجاد یک فیلد از نوع Identity به همراه مقدار شروع و گام افزایش را مشخص میکند.
USE tempdb GO CREATE TABLE Customers2 ( ID INT IDENTITY(100,2), Name NVARCHAR(100), [Address] NVARCHAR(200) ) GO
همانطور که در مثال 2 مشاهده میکنید فیلد ID از نوع Identity تعریف شده است و مقدار شروع آن از 100 و همچنین گام افزایش 2 در نظر گرفته شده است. در این صورت اگر چند رکورد زیر را به ازای این جدول درج کنید. مقدار Identity به صورت زیر خواهد بود.
INSERT INTO Customers2 (Name,[Address]) VALUES (N'مسعود',N'میانه'), (N'فرید',N'میانه'), (N'احمد',N'میانه') GO SELECT * FROM Customers2
مثال 3 : این مثال نحوه تنظیم یک فیلد به صورت Identity را در محیط SQL Server Management Studio (SSMS) آموزش میدهد.
1- برای شروع کار همانند تصویر زیر بر روی قسمت Table کلیک راست کنید و گزینه New Table… را انتخاب کنید.
2- پس از نمایش پنجره زیر فیلدی را که میخواهید از نوع Identity باشد را انتخاب کرده و در قسمت Column Properties خصیصه Is Identity را برابر Yes قرار دهید تا فیلد مورد نظر شما از نوع Identity در نظر گرفته شود. لازم به ذکر است که Identity Seed مقدار شروع و Identity Increment گام افزایش را مشخص مینماید.