xl.ActiveCell.Offset[1, 0].Select();
}
xl.Range["A1:B3"].Copy(); // xl.get_Range("A1:B3").Copy();
xl.Columns[1].AutoFit();
xl.Columns[2].AutoFit();
}
}
Для того, чтобы оценить вклад именованных параметров и параметров по умолчанию, сравните сигнатуру метода PasteSpecial с тем, как он был в действительности вызван в нашем коде.
void PasteSpecial(ref object IconIndex = null, ref object Link = null,
ref object Placement = null, ref object DisplayAsIcon = null,
ref object DataType = null, ref object IconFileName = null,
ref object IconLabel = null);
Новый тип данных dynamic также упрощает работу с Office COM Interop. Типы, используемые в Office представлены в C# как dynamic. Без использования типа dynamic вам пришлось бы работать так:
((Excel.Range)excel.Cells[1, 1]).Value2 = "ID";
С использованием этого типа мы работаем так:
X1.Cells[1, 1].Value = "ID";
Индексируемые свойства (Index Properties) упрощают обращение к ячейке до:
xl.Cells[1, 1] = "ID";
При работе с COM Interop сборки вида Primary Interop Assemblies (PIA) генерируются на основе COM-интерфейсов и упрощают разработку кода, но они сильно раздувают конечный продукт, так как содержат массу (возможно) неиспользуемых функций. Компилятор C# 4.0 позволяет имеет настройку No-PIA, которая позволяет включать в конечный код (distribution module) только используемую часть PIA.
¨ Создайте проект приложения типа Windows Forms по имени LinqBinding. Переименуйте файл и класс формы в MainForm.
¨ Добавьте в проект папку Data и принесите в нее файл с учебной базой данных Northwnd.mdf.
¨ В класс Program добавьте код, который создает открытую статическую переменную для хранения строки соединения с базой данных Northwnd.
static class Program
{
public readonly static string cnStr = "AttachDBFileName='" + FindFolder("Data") + "Northwnd.mdf" +
"';Server='.\\SQLEXPRESS';user instance=true;Integrated Security=SSPI;Connection Timeout=60";
static string FindFolder(string name)
{
string dir = Application.StartupPath;
for (char slash = '\\'; dir != null; dir = Path.GetDirectoryName(dir))
{
string res = dir.TrimEnd(slash) + slash + name;
if (Directory.Exists(res))
return res + slash;
}
return null;
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new FormEmployee());
}
}
¨ Добавьте в проект новый объект типа LINQ to SQL Classes по имени DBNorthWind. Студия добавит в проект файл DBNorthWind.dbml, который будет содержать схему источника данных.
¨ Откройте в студии окно Server Explorer и добавьте в узел Data Connections соединение с файлом базы данных NorthWind. с помощью сервера
¨ В окне Server Explorer раскройте узел дерева по имени Tables выделите все таблицы и перетащите их на поверхность окна редактора схем (DBNorthWind.dbml).
¨ Просмотрите код класса DBNorthWindDataContext, производного от DataContext, который сгенерирован студией и помещен в файл с расширением .designer.cs. Обратите внимание на то, что созданы классы, инкапсулирующие функциональность отдельных таблиц базы Northwind, например класс Employee.
¨ В контекстном меню окна редактора DBNorthWind.dbml выберите команду View Code (или нажмите F7). При этом студия создаст продолжение класса DBNorthWindDataContext в отдельном файле. Этот код, в отличие от кода в файле .designer.cs, вы можете редактировать и ваши изменения сохранятся. Заметьте, что изменения в
Additionally the Northwind.cs file has been modified from that generated by SQLMetal to include override ToString method on the Employee entity, this allows the DataGridView's ReportsToEmployee column to display a reasonable value.
Cannot implicitly convert type 'System.Linq.IOrderedQueryable<NorthwindMapping.Employee>' to 'System.Windows.Forms.BindingSource'. An explicit conversion exists (are you missing a cast?)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.