2017-06-23 7 views
0

私たちはABPテンプレートを私たちの企業で実装しようとしています。コードファーストのEFでは使用できない既存のアプリケーションDBがあります。企業はコードファースト法の使用を許可しません。したがって、db-firstメソッドを使用する必要があります。 既存のDBとSPでABPを実装した人がいる場合。 db-first useを有効にしたテンプレートに対するすべての変更のコードスニペットを共有してください。 すべての回答をいただければ幸いです!ASPNETBOILERPLATE .Netコアテンプレート - 既存のデータベースコードサンプルリクエスト

+1

違ったことを管理する必要があることworks。だからであるしてくださいSOへようこそ!あなたの質問をよりよく理解するために、あなたのコードの一部とこれまでに試したことを分かち合うことができますか?あなたはどこにいるのですか? – MMachinegun

+0

今まで、EFコアスキャフォールドcmdを使用して、既存のDBから "POCO"クラスを作成しました。 DBContextにDBSetエントリを追加しました。私たちが行った「新しい」ものは何もありません。 ABPテンプレートを使用してDBをセットアップした他の人たちからサンプルコードを入手しようとしていました。また、SPを使用する必要があり、そのためのサンプルコードも見たいと思っています。 – exlnt

+0

あなたは実際に何を抱えていますか?動かないものがありますか? – Neil

答えて

0
  1. listed

    dotnet new mvc -au None -f netcoreapp1.0

  2. EFコアは既存のDBをサポートしているテンプレートのいずれかから.NETのコア新しいプロジェクトを作成します(DBファーストアプローチ)、詳細指示はhereです。基本的にScaffold-DbContextコマンドを使用して、すべてのモデルクラスを生成します。

足場-DbContextはまだStoredProceduresをサポートしていないことに注意してください、それはあなたが

+0

返信いただきありがとうございます!私は実際に自分のスレッドを投稿した直後にMSのドキュメントを見つけました。私はそれを一歩一歩踏んだ。しかし、私は移行の足場の間に別のエラーにぶち当たっています。私はサポートチームのaspnetzeroフォーラムに投稿しました。 – exlnt

0

あなたの会社はあなたの現在のデータベース、データ、SPなどを失いたくないので、EF Code-Firstを使用することはできません。それは問題ありません。

私は、ABPアプリケーションを作成し、現在のリレーショナルモデル(データベース)と一致するようにエンティティを作成することをお勧めします。テーブル間の

  • 関係
  • テーブル名とカラム名
  • primeryキータイプ
  • 外部キー
  • など:EFが生成されたリレーショナルモデルをカスタマイズするのに十分な柔軟性があるので、これは権利です。あなたのYourApp_DbContextクラスで

あなたはOnModelCreatingをオーバーライドして、生成されたリレーショナルモデルをパーソナライズすることができます。

エンティティがリレーショナル・モデルと一致すると、コード・ファーストのアプローチを続けることができます。

私はDatabase-Firstアプローチを使うのは正しい方法ではなく、ABPはそのために設計されていないと思います。 Entityを最初に生成するためにDatabase-Firstアプローチを使用します(必要に応じて時間を節約するため)。

SPについては、EFでSPを呼び出すことができます。生のSQLクエリを実行することができ、その結果をエンティティまたは他のカスタムクラスにマッピングできます。

あなたが役に立ったら嬉しいです。

+0

返信いただきありがとうございます!それは有り難いです。企業は非常に大規模なグローバル組織です。期待どおりの職務分掌を行っています。データアーキテクト、DBA、そしてチームのアプリ開発者がいます。この構造のため、DAとDBAのチームに属するので、最初にコードを使用することはできません。アプリチームは、あらゆる種類のDBオブジェクトを作成することは許可されていません。私たちはDA/DBAにデザインを提案することしかできません。私は個人的には、独立したプロジェクトのためにコードファーストを使ってABPテンプレートを使っています。私は、まずABP DBを使用するためのコードスニペットを望んでいました。 – exlnt

0

コードファーストマイグレーションは使用できませんが、コードの最初のエンティティマッピングを利用することはできます。既存のデータベーステーブルの場合、リバースエンジニアリングツールを使用して、データベースのコードの最初のモデルを作成します。

ストアドプロシージャでは、Dapper(aspnetboilerplate click hereと統合されています)を使用できます。一方、エンティティフレームワークはストアドプロシージャもサポートしています。カスタムリポジトリ>click here for more infoを作成する必要があります。

これは、カスタムコマンド実行例です。あなたがSPに実行することができますこの方法... See here for more info

using (var uow = uowManager.Begin(TransactionScopeOption.Suppress)) 
{ 
    using (var con = new SqlConnection(ConnectionString)) 
    { 
     con.Open(); 

     using (var command = new SqlCommand("select * from ... ", con)) 
     { 
      using (var reader = command.ExecuteReader()) 
      { 
       while (reader.Read()) 
       { 
        return reader.GetString(0); 
       } 
      } 
     } 
    } 

    uow2.Complete(); 
} 
関連する問題