ذخیره سازی فایلهای باینری در بانک اطلاعاتی هیچگاه ایدهی خوبی نبوده. این وضعیت با ارائهی SqlFileStream به همراه SQL Server 2008 بهبود یافت و به این صورت تنها یک اشارهگر به فایل در بانک اطلاعاتی ذخیره میشود و نه اصل فایل. پس از آن FileTable به همراه SQL Server 2012 ارائه شد که نسخهی بهبود یافتهی FileStream به شمار میرود و توسط آن امکان دسترسی به متادیتای فایل، درون SQL Server و همچنین امکان کار با فایلها در خارج از SQL Server هم پشتیبانی میشوند. بنابراین اگر از SQL Server 2012 به بعد استفاده میکنید، روش ترجیح داده شده، کار با FileTable است: یک مثال کامل از نحوهی کار با FileTable در NET Core.
+ پشتیبانی کامل از FileStream جزئی از NET Core 3x. خواهد بود.
مقدمه:
دسترسی به WCF Data Service بوسیله مرورگر وب
WCF Data Services جزئی از NET Framework. است که امکان ایجاد سرویس دهندههای با قرارداد OData را به روی وب یا Intranet با استفاده از REST مهیا میسازد. OData از داده هایی که با Url آدرس پذیر هستند استفاده مینماید. دسترسی و تغییر دادهها با استفاده از استاندارد HTTP و کلمات GET، PUT، POST و DELETE صورت میپذیرد. برای اینکه درک بهتری داشته باشید به یک مثال میپردازیم.
ایجاد یک برنامه سرویس دهنده WCF Data Service در 2012 VisualStudio
- یک ASP.NET Web Application با نام NorthwindService ایجاد نمایید و بر روی پروژه راست کلیک کنید و از منوی Add گزینه New Item را انتخاب نمایید از پنجره باز شده از دسته Data گزینه ADO.NET Entity Data Model را انتخاب و نام ان را Northwind بگذارید.
- از پنجره باز شده Generate from Databaseرا انتخاب و با انتخاب کانکشن از نوع Sql Server Compact 4 اتصال به فایل Northwind.sdf را انتخاب تا کلاسهای لازم تولید شود.
- برای تولید data service بر روی پروژه راست کلیک کنید و از منوی Add گزینه New Item را انتخاب نمایید از پنجره باز شده گزینه
WCF Data Service را انتخاب و نام آن را Northwind.svc بگذارید. کد زیر خودکار تولید میشود
public class Northwind : DataService< /* TODO: put your data source class name here */ > { // This method is called only once to initialize service-wide policies. public static void InitializeService(DataServiceConfiguration config) { // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc. // Examples: // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead); // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3; } }
- برای دسترسی به موجودیتهای Northwind بجای عبارت put your data source نام مدل را تایپ کنید
public class Northwind : DataService<NorthwindEntities>
- برای فعال کردن دسترسی به منابع data source متغیر config کلاس DataServiceConfiguration را بصورت زیر تنظیم نمایید. تابع SetEntitySetAccessRule با گرفتن نام موجودیت و نحوه دسترسی امکان استفاده از این موجودیت را با استفاده از WCF Data Service فزاهم مینمایید. مثلا در زیر امکان دسترسی به موجودیت Orders را با امکان خواندن همه، نوشتن ادقامی و جایگزین فراهم نموده است.
config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead | EntitySetRights.WriteMerge | EntitySetRights.WriteReplace ); config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead);
- اگر بخواهیم امکان خواندن همه موجودیتها را فراهم کنیم از کد زیر میتوانیم استفاده نمایید که * به معنای همه موجودیتهای data model میباشد
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
برای دسترسی به وب سرویس برنامه را اجرا نمایید تا آدرس http://localhost:8358/Northwind.svc مشخصات وب سرویس را نمایش دهد
<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xml:base="http://localhost:8358/Northwind.svc/"> <workspace> <atom:title>Default</atom:title> <collection href="Categories"> <atom:title>Categories</atom:title> </collection> <collection href="Customers"> <atom:title>Customers</atom:title> </collection> <collection href="Employees"> <atom:title>Employees</atom:title> </collection> <collection href="Order_Details"> <atom:title>Order_Details</atom:title> </collection> <collection href="Orders"> <atom:title>Orders</atom:title> </collection> <collection href="Products"> <atom:title>Products</atom:title> </collection> <collection href="Shippers"> <atom:title>Shippers</atom:title> </collection> <collection href="Suppliers"> <atom:title>Suppliers</atom:title> </collection> </workspace> </service>
حال اگر آدرس را به http://localhost:8358/Northwind.svc/Products وارد نمایید لیست کالاها بصورت Atom xml قابل دسترس میباشد.
ایجاد یک برنامه گیرنده WCF Data Service در Visual Studio 2012
- بر روی Solution پروژه جاری راست کلیک و از منوی Add گزینه New Project را انتخاب و یک پروژه از نوع WPF Application با نام NorthwindClient ایجاد نمایید.
- در پنجره MainWindow مانند کد زیر از یک Combobox و DataGrid برای نمایش اطلاعات استفاده نمایید
<Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Northwind Orders" Height="335" Width="425" Name="OrdersWindow" Loaded="Window1_Loaded"> <Grid Name="orderItemsGrid"> <ComboBox DisplayMemberPath="Order_ID" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="true" Height="23" Margin="92,12,198,0" Name="comboBoxOrder" VerticalAlignment="Top"/> <DataGrid ItemsSource="{Binding Path=Order_Details}" CanUserAddRows="False" CanUserDeleteRows="False" Name="orderItemsDataGrid" Margin="34,46,34,50" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="Product" Binding="{Binding Product_ID, Mode=OneWay}" /> <DataGridTextColumn Header="Quantity" Binding="{Binding Quantity, Mode=TwoWay}" /> <DataGridTextColumn Header="Price" Binding="{Binding UnitPrice, Mode=TwoWay}" /> <DataGridTextColumn Header="Discount" Binding="{Binding Discount, Mode=TwoWay}" /> </DataGrid.Columns> </DataGrid> <Label Height="28" Margin="34,12,0,0" Name="orderLabel" VerticalAlignment="Top" HorizontalAlignment="Left" Width="65">Order:</Label> <StackPanel Name="Buttons" Orientation="Horizontal" HorizontalAlignment="Right" Height="40" Margin="0,257,22,0"> <Button Height="23" HorizontalAlignment="Right" Margin="0,0,12,12" Name="buttonSave" VerticalAlignment="Bottom" Width="75" Click="buttonSaveChanges_Click">Save Changes </Button> <Button Height="23" Margin="0,0,12,12" Name="buttonClose" VerticalAlignment="Bottom" Width="75" Click="buttonClose_Click">Close</Button> </StackPanel> </Grid> </Window>
- برای ارجاع به wcf data service بر روی پروژه راست کلیک و گزینه Add Service Reference را انتخاب نمایید در پنجره باز شده گزینه Discover را انتخاب تا سرویس را یافته و نام Namespase را Northwind بگذارید.
- حال مانند کد زیر یک شی از مدل NorthwindEntities با آدرس وب سرویس ایجاد نموده ایم و نتیحه کوئری با استفاده از کلاس DataServiceCollection به DataContext گرید انتصاب داده ایم که البته پیش فرض آن آشنایی با DataBinding در WPF است.
private NorthwindEntities context; private string customerId = "ALFKI"; private Uri svcUri = new Uri("http://localhost:8358/Northwind.svc"); private void Window1_Loaded(object sender, RoutedEventArgs e) { try { context = new NorthwindEntities(svcUri); var ordersQuery = from o in context.Orders.Expand("Order_Details") where o.Customers.Customer_ID == customerId select o; DataServiceCollection<Orders> customerOrders = new DataServiceCollection<Orders>(ordersQuery); this.orderItemsGrid.DataContext = customerOrders; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
- با صدا زدن تابع SaveChanges مدل میتوانید تغییرات را در پایگاه داده ذخیره نمایید.
private void buttonSaveChanges_Click(object sender, RoutedEventArgs e) { try { context.SaveChanges(); } catch (DataServiceRequestException ex) { MessageBox.Show(ex.ToString()); } }
- برنامه را اجرا نمایید تا خروجی کار را مشاهده نمایید. مقادیر Quantity را تغییر دهید و دکمه Save Changes را انتخاب تا تغییرات دخیره شود.
اشتراکها
9.Visual Studio 2017 15.8 منتشر شد
These are the customer-reported issues addressed in 15.8.9:
- Added support for Xcode 10.1 in Visual Studio Tools for Xamarin.
- Updated the Xamarin.Forms template to Xamarin.Forms 3.3.0.
- Update 15.8.6 breaks Installer Projects.
- Internal Compiler error in VS15.8 msc1.cpp line 1518.
- Microsoft Visual Studio 2017 Installer Projects 0.8.8 and VS 15.8.6.
- SFINAE fails to detect matching overloaded function in preview VS preview 3 15.9.0.
- XAML Designer crash on Visual Studio close.
اشتراکها
ویژوال استودیو را هک کنید!
Visual Studio, like any Integrated Development Environment, can host extensions for more specialist languages or development tasks. This sort of work is reasonably straightforward most of the time but occasionally you need functionality that isn't available in the APIs. Michal takes two examples, printing code in an editing window, and gaining access to the Visual Studio Notifications, and explains how to hack Visual Studio to get to the functionality.
- WebNote.ir | عادت های بد برنامه نویسی (کارمندی) - قسمت دوم | www.webnote.ir
- Load and Web Performance Testing using Visual Studio Ultimate 2010 [Part 1] | geekswithblogs.net
- Load and Web Performance Testing using Visual Studio Ultimate 2010-Part 2 | geekswithblogs.net
- Load and Web Performance Testing using Visual Studio Ultimate 2010-Part 3 | geekswithblogs.net
- SuperSocket, an extensible socket application framework | supersocket.codeplex.com
- XPath Visualizer | xpathvisualizer.codeplex.com
- Parallel Visualization Pack در نگارش بعدی ویژوال استودیو | www.infoq.com
- جاوا 8 با پشتیبانی از Lambda | jdk8.java.net
- معماری ARM و دات نت 4.5 | weblog.ikvm.net
من از Rider روی MacBook استفاده میکنم و واقعاً کار کردن باهاش عالیه چون همزمان یک IDE جامع و همچنین ReSharper رو ارائه میده. به شخصه وقتی از Visual Studio استفاده میکنم نیاز به استفاده از ماوس خیلی بیشتر احساس میشه ولی وقتی در محیط Rider کدنویسی میکنم اصلاً نیازی به استفاده از ماوس ندارم. همچنین قابلیتهای جالبی برای دیباگ کد به خصوص Lambda Expression ارائه میده که واقعاً جالب و کاربردی هستن (+). در نهایت به شخصه Rider رو بیشتر میپسندم چون JetBrains سعی کرده محصولات برترش رو توی این IDE قرار بده، به عنوان مثال شما در Rider به یک نسخه کم حجم DataGrip نیز دسترسی دارید که نوشتن TSQL را واقعاً راحت کرده:
Rider به مرور زمان داره ویژگیهای Visual Studio رو اضافه میکنه، به عنوان مثال در ورژنهای جدید قابلیت C# Interactive رو اضافه کرده اما فعلاً به خوبی Visual Studio نیست و از IntelliSence پشتیبانی نمیکنه:
- زمانیکه یک DLL قابل بارگذاری نیست یعنی یکسری از وابستگیهای آن نصب نشدند. این لیست را هم باید نصب کنید:
Windows dependencies
- وابستگی ویندوز سرور آن علاوه بر نصب NET Core.، نصب Visual C++ Redistributable for Visual Studio 2015 است. بستهای را که در اینجا لینک دادند، قدیمی است. آدرس بستهی به روز و جدید آن (با شماره نگارش 14.0.24215 ^)
Windows dependencies
- وابستگی ویندوز سرور آن علاوه بر نصب NET Core.، نصب Visual C++ Redistributable for Visual Studio 2015 است. بستهای را که در اینجا لینک دادند، قدیمی است. آدرس بستهی به روز و جدید آن (با شماره نگارش 14.0.24215 ^)
نظرات مطالب
خواندنیهای 27 شهریور
سلام،
به تولبار شما باید یک سری آیتم اضافه شده باشد مطابق تصاویر ذیل:
http://blogs.msdn.com/vsdata/archive/2009/07/24/visual-basic-power-packs-is-included-in-visual-studio-2008-sp1.aspx
و یک نمونه از موارد کاربرد آن
http://msdn.microsoft.com/en-us/vbasic/bb735936.aspx
به تولبار شما باید یک سری آیتم اضافه شده باشد مطابق تصاویر ذیل:
http://blogs.msdn.com/vsdata/archive/2009/07/24/visual-basic-power-packs-is-included-in-visual-studio-2008-sp1.aspx
و یک نمونه از موارد کاربرد آن
http://msdn.microsoft.com/en-us/vbasic/bb735936.aspx
اشتراکها
NET 7.0.201. منتشر شد
اشتراکها