2017-03-02 6 views
1

EFコアを使用せずにASP.NETコアWeb APIを作成しようとしています。代わりに、System.Data.SQLClientを使用してSQLサーバーに接続し、単純な古いSQLを使用してクエリを実行したいと考えています。つまり、私は接続を確立する方法を考え出すのに少し問題があります。私は、EFでこれを行う方法に対処する多くのチュートリアルをオンラインで見つけました。しかし、私はそれがなくしてどうやっているのか少し難解です。EFを使用せずにASP.NET Core Web APIでデータベースに接続するにはどうすればよいですか?

答えて

4

あなたが任意の.NETアプリケーションで同じようにあなたは、まったく同じようにそれを行う:

using (var conn = new System.Data.SqlClient.SqlConnection(connectionString)) { 
    conn.Open(); 
    using (var cmd = conn.CreateCommand()) { 
     cmd.CommandText = "SELECT 'hello world'"; 
     using (var reader = cmd.ExecuteReader()) { 
      while (reader.Read()) { 
       ... 
      } 
     } 
    } 
} 

あなたはアイデンティティがものを主張するようにasp.netコアの一部は、EFを必要とすることができますので、あなたがします独自の認証を処理する必要があり、セキュリティ属性などを使用できなくなります。私はこのルートをいくつかのasp.netコアプロジェクトに残しました。

+0

返信いただきありがとうございます。私はそれをWeb APIフレームワークとどのように統合するかについて言及しています。私はStartup.csにConfigureメソッドがあると述べましたが、それは依存性注入に大きく依存しているようですが、これは私が苦労しているところです。混乱のために私の謝罪、私は質問が2つの部分を持っていたことが明らかにされている必要があります。 – toolshed

+0

asp.netコアのDIパターンと一致するSqlConnectionオブジェクトのファクトリとなるDIにサービスを構築して追加する方法を尋ねていますか?具体的に何があなたのために働いていないのですか? – Tim

+0

私の問題は、単にクエリしたい既存のデータベースがあり、その結果をREST APIにプッシュすることです。チュートリアルから私が理解していることは、 'Startup.cs'の' ConfigureServices'メソッドでDB接続を開始してから、コントローラクラスでmyコマンドを実行することです。私はこのパラダイムがどのように設計されているのか誤解していますか? – toolshed

0

SqlConnectionクラスとSqlCommandクラスを使用する必要があります。 documentation

private static void CreateCommand(string queryString, string connectionString) 
{ 
    using (SqlConnection connection = new SqlConnection(
      connectionString)) 
    { 
     SqlCommand command = new SqlCommand(queryString, connection); 
     command.Connection.Open(); 
     command.ExecuteNonQuery(); 
    } 
} 

CreateCommand("insert into...", "[your connection string]"); 

からAditionally、Dapperは、データにアクセスするための優れた選択肢である、のIDbConnectionを拡張するオブジェクトマッパーであるので、あなたは、オブジェクトの作成を心配する必要はありません。 dapperのドキュメントから

public class Dog 
{ 
    public int? Age { get; set; } 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public float? Weight { get; set; } 

    public int IgnoredProperty { get { return 1; } } 
}    

var guid = Guid.NewGuid(); 
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid }); 
関連する問題