19353


SqlConnectionクラスのOpenメソッドを使用するのと､LinqToSQLでDBContextクラスを生成する方法とどちらかおすすめでしょうか｡

どちらでも接続方法はわかるのですが､違いをよく理解してないまま使うのも気持ち悪いので…  
ご教授ください｡


CC BY-SA 3.0
2015-11-26T08:53:57.107
19324
2015-11-28T07:26:30.730
12388
question
c#
C#でSQLServerへの接続


データベースエンジンへの接続は手段でしかなく、真の目的はデータベース操作（データ取得 and/or データ操作）にあるはずです。

というわけで接続した後で何をしたいのでしょうか？
固定的なSQL文を発行するだけでいいのであれば`SqlConnection`クラス及び`SqlCommand`クラスを使用することになりますが、[O/R
Mapper](https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E9%96%A2%E4%BF%82%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0)を使いたいのであればライブラリが用意されています。  
ただし、`LinqToSQL`は.NET 3.5での初登場からほぼほぼ放置されており、なおかつ.NET 3.5 SP1にて[Entity
Framework](https://msdn.microsoft.com/ja-
jp/data/ef.aspx)という別のライブラリが登場しています。こちらは随時、機能追加・バージョンアップを重ねています。もし`LinqToSql`を検討されているのであればそれよりは`Entity
Framework`をお勧めします。


CC BY-SA 3.0
2015-11-27T01:06:09.757
19353
2015-11-27T01:06:09.757
4236
19324
answer


何をやりたいのかによって最適な手段はことなってきます。

ADO.NETによる接続であればSQLを直接記述するので、SQL Serverの機能を余すところなく利用できます。

LINQ To SQLはSQL
Serverのスキーマを元にクラスを自動生成する簡易的なORマッパーです。SQLを直接記述する事も出来ますが、原則として自動生成されるSQLを使うことになるので非効率なSQL文が生成される事もあるでしょう。静的型のチェックによる恩恵もあるのでADO.NETに比較してコーディングは楽になるでしょう。

Entity Frameworkはクラス設計を元にSQL
Serverのスキーマを生成するORマッパーです。先にクラス設計を行うので既存のデータベースに対して利用するのは難しいです。また逆にEntity
Frameworkを使わずにSQL Serverにアクセスする必要が生じた場合に苦労するかもしれません。


CC BY-SA 3.0
2015-11-27T20:32:51.693
19386
2015-11-27T20:32:51.693
12774
19324
answer


お二人の回答とても参考になりました。  
LinwToSqlが個人的には簡単でいいな、と思っていたのですが、EntityFrameworkも勉強して使えるようにしたいと思います。

貴重な回答とお時間、ありがとうございました。


CC BY-SA 3.0
2015-11-28T07:26:30.730
19403
2015-11-28T07:26:30.730
12388
19324
answer