◆メニュー
【SQL Server】開発環境構築(ER図作成にSSMSを使用)
◆概要
SSMSで作成したDBインスタンスからC#のエンティティクラスを生成する手順
◆環境
Visual Studio Pro以上(Community版は未調査。)
1. Winキー押下し、visを入力し、Enterキー押下。(環境によってはVisだけでは足りないので、入力文字を増やすこと)
2. [ファイル]-[新規作成]-[プロジェクト]を選択。
3. 適切なテンプレートを選択し、適切なプロジェクト名を設定し、OKボタン押下。
4. Ctrl+Shift+Bでビルドし、F5キーで実行まで確認しておく。
5. プロジェクトを右クリックし、[追加]-[新しい項目]を選択。
6. 「ADO.NET Entity Data Model」を選択、適切な名前を入力し、「追加」ボタン押下。
7. 「データベースからEF Designer」を選択し、「次へ」ボタン押下。
8. サーバ名・データベース名を入力し、「テスト接続」ボタン押下。サーバ名・DBインスタンス名は読み替えること。
9. 「OK」ボタン押下。
10. 「接続設定に名前を付けて App.Config」に保存をチェックし、「次へ」ボタン押下。
11. 「Entity Framework 6.x」を選択し、「次へ」ボタン押下。
12. データベースオブジェクトは全選択し、「完了」ボタン押下。下記ではビューが存在しないため、チェックしていないが、基本的には全てにチェックを入れる。(モデル名前空間はDbEmployeesModelのようにしたほうがいいかも。)
13. 「OK」ボタン押下。
14. ソリューションエクスプローラーにedmxが作成され、配下にテーブル名.csが生成ていることを確認。
15. MainWindows.xamlをダブルクリックし、ツールボックスからButtonをD&D。
16. フォーム上に配置したbuttonを選択し、プロパティパネルの⚡ボタンを押下し、Clickテキストボックスをダブルクリック。
17. コードが生成されることを確認。
18. 下記のようにDBアクセスのコードを入力し、ビルド&実行。
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
using (var ctx = new DB_EMPLOYEESEntities())
{
using (var tran = ctx.Database.BeginTransaction())
{
ctx.T_部署.Add(new T_部署() { 部署ID = 1, 部署名 = "開発1" });
ctx.T_社員.Add(new T_社員() { 社員ID = 1, 姓 = "名無し", 名 = "太郎", 所属部署ID = 1 });
ctx.SaveChanges();
tran.Commit();
}
var ret = (from shain in ctx.T_社員
join bu in ctx.T_部署
on shain.所属部署ID equals bu.部署ID
select new { shain, bu }).First();
// Namespace==Systemは、外部参照などを表示しないようにプリミティブとstringのみにフィルタ
// しっくりこないが…。
Func<object, List<string>> trans = o =>
( from ps in o.GetType().GetProperties()
where ps.PropertyType.Namespace == "System"
select ps.Name + ":" + ps.GetValue(o, null)).ToList();
MessageBox.Show(
string.Join(",", trans(ret.bu )) + Environment.NewLine +
string.Join(",", trans(ret.shain)));
}
}
}
}
19. Buttonを押下。
20. selectの結果も正しい。
21. SSMSで確認しても、レコードが挿入されていることが確認できる。
0 件のコメント:
コメントを投稿