問題タブ [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.
.net - mono の SqlMetal が PostgreSQL のユーザー/拡張定義型を理解できるようにする
Rails webapp を C#(mono) に移植しようとしていますが、同じデータベースを使用したいと考えています。sqlmetal を使用して Linq スキーマを作成しようとすると、次のエラー メッセージが表示されます。
私のデータベースでは、 hstoreとPostGISの 2 つの拡張子を使用しています。これら 2 つの拡張機能を削除すると、sqlmetal によってスキーマが適切に作成されます。両方の拡張機能がエラーを引き起こします-1つだけを削除しても(両方で試してみました)、それでもエラーが発生します。もちろん、これらの拡張機能を削除することは実際にはオプションではありません...
私が理解できることから、問題は、sqlmetal がこれらの拡張機能で定義されたカスタム型を理解していないことです。Web を検索したところ、これらの型の処理方法を定義するにはカスタム スキーマ ローダーを使用する必要があることが--with-schema-loader
わかりました。
--with-schema-loader
はカスタム ローダーとして使用するクラスを定義していますが、そのクラスを含む DLL ファイルはどこで指定できますか?- そのスキーマ ローダーをどのように記述すればよいでしょうか。例が見つかりませんが、埋め込まれたドキュメントには、ISchemaLoader を実装する必要があると書かれています。ドキュメントが見つからず、ソースコードからは何もわかりません(MyBatisのYypeHandlersのようなものを期待していました...)
誰かがこれを行う方法について私に手がかりを与えることができますか?
sql - SQLMetal - 複数のフィールドを持つ外部キー制約 - エラー
複数のフィールドに外部キー制約を定義する sqlite データベースで SQLMetal を実行しようとすると、エラーが発生します。
表は次のとおりです。
エラーメッセージは次のとおりです。
誰でもその問題を解決する方法を知っていますか?
visual-studio-2010 - VS2010 DBML デザイナーは関連付けの名前を変更します
SQL Server Data Tools プロジェクト (.sqlproj) を使用してデータベースの構造を管理し、Visual Studio で新しいオブジェクトを作成して、それらを SQL Server インスタンスに (直接または発行スクリプトを生成して) 発行します。
SSDT は、形式を使用して FK に自動的に名前を付けます
FK_ThisTable_ThatTable
SqlMetal を使用して、Linq-to-SQL DBML を生成します。
VisualStudio のデザイナで DBML を開き、図のレイアウトを変更して保存すると、DBML に含まれるようになりました。
これは、MSLinqToSQLGenerator による不要な変更と、SqlMetal の実行後の元の名前の復元により、TFS ソース管理の DBML ファイルの履歴を読み取るのが非常に困難であることを意味します。
Visual Studio の DBML デザイナが FK 名を変更しないようにするにはどうすればよいですか?
c# - Ling To Sql: Incompatible Database version
Visual Studio で拡張子 .sdf のローカル データベース ファイル (Sql Server Compact データベース ファイル) を作成し、SqlMetal.exe を使用して Linq を Sql データベース ファイルに接続していました。ただし、データベースのバージョンに互換性がないというエラーが表示されます。
32 ビット バージョンと 64 ビット バージョンの両方の Microsoft SQl Compact Server がインストールされており、Windows 8、64 ビットで実行しているとします。誰もそれを修正する方法を知っていますか? ありがとう
c# - SqlMetal は、特定のテーブルへの新しい外部キーの関連付けを生成できません
私のチームは SqlMetal を使用して、SqlServer データベースからデータベース クラスを生成しています。既存のすべてのクラスと外部キーの関連付けに対しては完全に機能しますが、追加したい特定の新しい外部キーの関連付けのコードを生成することを拒否しています。このキーは、監査レコードが作成された時間とそれが作成されたユーザーの詳細を示す、監査テーブルからグローバル イベント テーブルへのキーです。システムには、他の監査テーブルとこのグローバル「イベント」テーブルとの間の同様の外部キー関連付けが多数存在し、SqlMetal はそれらの関連付けのコードを生成します。
次の方法でこの問題を解決しようとしました。
- テーブルの削除と再作成
- 主キーの削除
- 別の名前で新しい同一のテーブルを作成する
- テーブルから他のすべてのフィールドを削除する
- インデックスのダンプ
- データベースの新規構築の実行
- 外部キーの名前変更
上記のいずれも問題を解決していないようです。ただし、SqlMetal は、このテーブルからシステム内の一部 (すべてではない) の他のテーブルへの外部キー関連付けのコードを正しく生成します。これら 2 つのテーブル間の関連付けは、元の create table スクリプトを後で実行するのではなく、外部キーの関連付け (または新しい同等のテーブル) を含めるように変更した場合にのみ生成されます。残念ながら、この変更をスクリプトとして既存の実稼働データベースに展開できるようにする必要があるため、これはオプションではありません。同様の問題に言及している記事やフォーラムの投稿をいくつか見たことがありますが、解決策や説明さえも提供していないようです。
c# - SQLMetal Objectmodel をアプリケーション オブジェクト モデルとして使用できますか?
私たちのチームは Sql Metal を使い始めたばかりで、私は 2 日間使ってみました。これを行っている間、私はいくつかのことに気づきました。
- 次のようなコマンドを実行すると
sqlmetal /code:ps.cs /server:devapp042dbs /database:promotionalsponsorship /namespace:DAL
「LINQ to SQL SQLMETal」オブジェクト モデルを作成します。さて、これは通常のクラスではありません。多くの自動生成されたコードがあり、多くの自動生成されたプロパティとメソッドを備えた LINQ/EF のような匂いがします。
サービス スタックの Dapper や ORMLite などの Micro ORM を使用しましたが、それらの素晴らしい点は、独自のオブジェクト モデルを自動生成するのではなく、作成した単純なオブジェクト モデルで動作することです。
私の質問は、これらの SQLMetal マッピング クラスをアプリケーションのモデルとして使用できるか、または必要なすべての情報を抽出できる単純なラッパー クラスを作成する必要があるかということです。
私の要点を明確にするために、私がSQL メタル クラスと単純なモデル クラスと呼んでいるもののサンプルを以下に示します。
c# - SQL Server CE との SQLMetal 非互換データベース エラー
C# プロジェクトで単純な SQL Server Compact データベースを作成しました。SQLmetal
ファイルを使用しdatabase1.sdf
てコード ファイルを作成しようとすると、次のエラー メッセージが表示されます。
エラー : データベースのバージョンに互換性がありません。これが互換性のあるファイルである場合は、修復を実行します。その他のケースについては、ドキュメントを参照してください。[データベース バージョン = 4000000、要求されたバージョン = 3505053、ファイル名 = \?\C:\Documents\Visual Studio 2012\Projects\WpfApplication5\WpfApplication5\Database1.sdf]
プロジェクト参照System.data.SqlServerCe
を 3.5 および 4.0 に何度も変更しようとしましたが、そのたびに、新しい SQL Server Compact データベースで新しいサンプル プロジェクトを作成してみました。
どんな助けでも大歓迎です。
ありがとう。
c# - SQLMetal で生成されたクラスを使用してテーブルを更新するときに、キーワード 'WHERE' 付近の構文が正しくありません
SQL Server にかなり基本的なテーブルがあります (デュアル キー、外部キーなし)。SQLMetal を使用してマッピング コードを生成しました。IEquatable を実装できるように、自動生成された部分クラスも拡張しました。問題は、IEquatable を実装すると、SQLMetal で生成されたクラスを使用してレコードを更新できなくなることです。変更を送信すると、次の例外が発生します。
キーワード「WHERE」付近の構文が正しくありません
次のサンプル コードは、問題を示しています。IEquatable を実装するまで問題なく動作します。
これは IEquatable の私の実装です (ReSharper によって自動生成されます):
出力ウィンドウに出力されるクエリを見てください。IEquatable が実装されている場合、SET 句は空です (例外がスローされます)。
UPDATE [dbo].[TestTable]
SET
WHERE ([PrimaryKey1] = @p0) AND ([PrimaryKey2] = @p1) AND ([TheValue] = @p2)
-- @p0: Input Int (Size = -1; Prec = 0; スケール = 0) [123]
-- @p1: 入力 NVarChar (サイズ = 4000; 精度 = 0; スケール = 0) [赤]
-- @p2: 入力 NVarChar (サイズ = 4000; 精度 = 0; スケール= 0) [8dedfdca-84e9-4b7a-9268-4bbdde2e9ad2]
以下は、IEquatable を実装していない同じ出力です。
UPDATE [dbo].[TestTable]
SET [TheValue] = @p3
WHERE ([PrimaryKey1] = @p0) AND ([PrimaryKey2] = @p1) AND ([TheValue] = @p2)
-- @p0: Input Int (サイズ = -1; 精度 = 0; スケール = 0) [123]
-- @p1: 入力 NVarChar (サイズ = 4000; 精度 = 0; スケール = 0) [赤]
-- @p2: 入力 NVarChar (サイズ = 4000) ; Prec = 0; Scale = 0) [8f6e72ee-f89e-40f3-830f-18e8b4b40f9e]
-- @p3: 入力 NVarChar (Size = 4000; Prec = 0; Scale = 0) [1ecaff9d-d460-4f3e-b35d-138ddeb2fb63 ]
この動作は予期されたものですか? それを回避する方法はありますか?