問題タブ [sqlmetal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - SqlMetal および Visual Studio を使用する場合の DataContext デザイナー ファイルの自動生成
LinqToSqlを使用して、ASP.net アプリケーションの DataContext.dbml クラスを一般化するために SqlMetal を使用しています。最初に DataContext.dbml ファイルを作成したとき、Visual Studio はこれを使用して、関連する DataContext.designer.cs ファイルを作成しました。このデザイナー ファイルには、アプリ全体で使用される C# の DataContext クラス (および dbml ファイルの XML から派生) が含まれており、SqlMetal の出力と LinqToSql での DataContext の使用との間のギャップを埋めるために不可欠です。
ただし、データベースに変更を加えて dbml ファイルを再作成すると、web サイトでデザイナー ファイルが再生成されません。代わりに、古いデザイナー ファイルが維持されます (したがって、LinqToSql DataContext クラスを介して DBML ファイルへの変更にアクセスすることはできません)。
これまでのところ、デザイナー ファイルを再生成するために使用できた唯一のプロセスは次のとおりです。
- Windows エクスプローラーに移動し、dbml ファイルと designer.cs ファイルの両方を削除します。
- Visual Studio に移動し、ソリューション エクスプローラーで [更新] をクリックします。dbml および designer.cs ファイルがプロジェクトから消えます。
- SqlMetal を使用して dbml ファイルを再生成します。
- Visual Studio に移動し、ソリューション エクスプローラーで [更新] をクリックします。これで、designer.cs ファイルが再作成されました。
まだdesigner.csファイルがない新しいdbmlファイルが検出された場合、Visual Studioはdesigner.csファイルのみを生成するようです。このプロセスは、いくつかの手動の手順を必要とし、ソース管理を台無しにするため、かなり非現実的です。
上記の手動の削除/更新/再生成/削除プロセスに従わなくても、designer.cs ファイルを自動的に再生成する方法を知っている人はいますか?
sqlmetal - SQLmetal は linq から sql へのマッパーだけですか?
コード生成ツールの sqlmetal は linq から sql へのマッパーにすぎませんか?
次のような一般的なCRUD操作を作成するものを探しています:
GetUserByID UpdateUserByID InsertUser GetAllUsers
等
visual-studio - VS2008でSqlMetalビルドステップを追加するには?
SqlMetal を実行してデータベースの LINQ to SQL DataContext を再生成する 1 行のバッチ ファイルを作成しました。これはうまくいきます。
Refresh_DataContext.bat :
これまでのところ、エクスプローラーで囲んでいるフォルダーを開いてバッチ ファイルを実行することでこれを実行できます。また、それを [ツール] メニュー ( Tools/External Tools.../Add
) にも追加しました。
(特定の構成で) ビルドするたびに、このバッチ ファイルを実行したいと思います。どうすればいいですか?
vb.net - 部分クラスの残りの半分のメンバーへのアクセス
VB.NET と VS2008 で部分クラスを操作する方法を学んでいます。具体的には、SqlMetal によって自動的に作成された LINQ to SQL クラスを拡張しようとしています。
自動生成されたクラスは次のようになります。
別のファイルで、私がやろうとしていることは次のとおりです。
...しかし、「Me.Country
」とメッセージの下に青いギザギザが表示されます'Country' is not a member of 'DataContext.Concession'
。部分クラスの両方の半分が同じ名前空間にあります。
では、部分クラスの半分から、自動生成された部分クラスの半分のプロパティにアクセスするにはどうすればよいでしょうか?
c# - sqlmetal を使用して内部 (パブリックではない) データ コンテキストを生成する方法
sqlmetal を使用して自分のプロジェクトの dbml データ コンテキストを生成したいのですが、作成されたデータ コンテキストとすべてのクラスが としてマークされていpublic
ます。これは API レイヤーであるはずなので、代わりにこれらのクラスの多く、または少なくともコンテキスト自体を としてマークしたいと思いますinternal
。手動で dbml を編集することなく、sqlmetal またはその他のツールでこれを行う方法はありますか?
asp.net - コマンド ラインから Web アプリ コードを実行しますか?
独自のデータベース スキーマを適用するためのコードを含む ASP.NET Web アプリケーションがあります。このコードは、アプリケーションの開始時に実行されます。
最近、LINQ to SQL の使用を開始しました。データベースで SqlMetal を実行するビルド前イベントを追加して、db テーブルを表すオブジェクトを取得しました。
ビルド前のイベントでデータベース スキーマを適用してから、SqlMetal を実行できれば、本当に素晴らしいことです。そのままでは、スキーマが変更された場合 (たとえば、テーブルにフィールドを追加した場合)、(a) Web サイトをビルドして実行し、アプリケーションが起動してスキーマが適用されるようにし、(b) 再度ビルドする必要があります。 SqlMetal が実行されるようにします。
では、Web アプリケーションにあるコードをコマンド ラインから実行するためのオプションは何ですか?
visual-studio-2008 - スクリプトを使用して Linq2Sql DBML を自動生成することはできますか?
私は Linq2Sql を使用していますが、データベースが変更されるたびに dbml を再作成するのにうんざりしています。すべてのテーブルとすべてのプロシージャが必要な場合、モデルの作成をスクリプト化することはできますか? 理想的には、ビルド プロセスまたはカスタム ツールの一部になります。
単純な「スキーマから更新」ボタンでも問題ありませんが、私が知る限り、そのようなことはありません。現在、モデルを更新する唯一の方法は、変更されたテーブルとプロシージャを削除し、サーバー エクスプローラーから再度ドラッグすることです。
多分私は何かを逃していますか?
linq-to-sql - SqlMetal 生成ガベージ アソシエーション名
SqlMetal がアソシエーション名を台無しにするのはなぜですか。たとえば、「TextMessage」テーブルには、「ApplicationUser」テーブルを参照する 2 つの列があります。「SenderUserId」と「RecipientUserId」
SqlMetal を実行して「ApplicationUser」クラスを確認すると
「RecipientUserId」の場合、次が生成されます。
「SenderUserId」の場合、このガベージ名前付きプロパティが生成されます。
どうすればこれを解決できますか? これは使えません。Linq To Sql コードを生成するより良い方法はありますか?
linq - 12MBのDataContext.csファイルを生成するときに、SQLMetalを使用して大規模DB用のLINQ To SQLデータコンテキストを作成する方法は?
私の問題はこれです:
多くの SPROC、ビュー、およびテーブルを備えた非常に大規模なレガシー DB があります。
デザイナーは、サイズの "NO GO" b/c です。
データ コンテキストを構築するように SQL Metal を構成しましたが、結果のコード ファイルが非常に大きく (12 MB)、Visual Studio 2008 で開くことができません。
SQLMetal がクラス タイプ (テーブル、ビュー、SPROC_Result) ごとに新しいファイルを生成する場合、問題はありません。
しかし、それが現在機能しているので、私はうんざりしています。
アイデア??