問題タブ [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.
azure - SQL Azure データベースで SQLMetal を使用する
説明したくない理由により、マスター データベース スキーマは現在 SQL Azure にのみ存在します。Enzo Backup などのツールを使用してローカルでダウンさせる作業を行っています (ダウンロードしようとしたときに発生したいくつかのバグを開発者が修正するのを待っています) が、それまでの間、Linq-to-Sql を生成したいと思います。 SQL Azure DB スキーマからの ORM マッピング。これを行おうとすると、出力に次のような一連のエラー メッセージが生成されます。
警告: SQM1012: SqlServer からテーブル 'dbo.[TableName]' を抽出できません。オブジェクト名 'syscomments' が無効です。
SQL Azure データベースから ORM マッピングを生成することはまったく可能ですか?
編集
最新バージョン (2008 R2) でも、SSMS からのスクリプトの生成は機能しないことに注意してください。SQL Azure データベース インスタンスでスクリプトを生成しようとすると、生成されたレポートに次のエラーが表示され、最初のオブジェクトを処理する前に失敗します。
System.IndexOutOfRangeException: インデックスが配列の範囲外でした。Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork (オブジェクト送信者、DoWorkEventArgs e) で System.ComponentModel.BackgroundWorker.OnDoWork (DoWorkEventArgs e) で System.ComponentModel.BackgroundWorker.WorkerThreadStart (オブジェクト引数) で
編集 2
無料のSMOscriptツールを使用しようとしましたが、同じ種類のエラー メッセージが生成されます。
したがって、これまでのところ、DDL スクリプトを簡単に生成することは問題外であり、SQL Azure DB に対する 2008 R2のSMOレベルで壊れているようです。
c# - VC2010 で LINQ to SQL をうまくセットアップできるのに、なぜ SQLMetal が関連するのですか?
私はここで新しいので、こんにちは。
ASP.NET 4 を使用しており、データ コントロールに LINQ to SQL を使用しています。アドバイスに従って、DBML (LINQ to SQL Class Item) を作成し、関連するテーブルを SQL Server からドラッグします。次に、LINQ を使用してコードでこの DBML を使用します。
これはすべて正常に機能します。私は今SQLMetalに出くわしました。このツールの関連性がわかりません。何か不足していますか?
ありがとう、
エド
linq-to-sql - sqlmetalはどのように関連付け名を生成しますか?
sqlmetalが生成する関連付け名は、多くのフラストレーションの原因となっています。アソシエーションは、単に「Id」が末尾から外された列名である場合もあれば、外部キー制約名に基づいてアソシエーション名を生成する場合もあります。
これらの名前を生成するためにどのような手順を使用するのかがわかりません。最近のスキーマの変更により、関連付けの名前が再び大幅に変更されたため、これを処理したいと思います。
ある種のチェーンで相互に参照する2つのテーブルがあります。このようなもの:
これらはスキーマ変更前のクラスであり、InテーブルとOutテーブルの間に追加のFKフィールドがありました。そのフィールドを削除した後、sqlmetalはこれを生成します:
以前のクラスは本来あるべき完全に対称でしたが、生成されたクラスは完全に非対称になりました。誰かがこれを説明できますか?
c# - 次の2つのクエリの違いを誰かに説明してもらえますか?
データベースからデータを取得するために、SqlMetal(linq to sql)を使用しています。ただし、次のコードを使用すると異なる結果が得られます。
このrecord1がいっぱいになった後、record2はNULLになり、同じであると予想されます。
誰かが違いを説明できますか?
編集:
補足:
r.selected_partial_url_idはnull許容のintであり、比較されるプロパティも同様です。r.selected_last_part_url_idはint型であり、比較されるプロパティも同様です。r.language_idはint型であり、比較されるプロパティも同様です。
c# - 自動生成値と自動同期を SQL Metal またはコードで設定する方法
今は午前 1 時 30 分です。ここに紛らわしい部分がありましたら申し訳ありません。
SQLMetal を使用して、データベース テーブルのデータ コンテキストを生成しています...
私はコマンドを使用しました:
これはすべて正常に機能し、テーブルなどですべての CRUD 機能を実行できます...ほとんど..
タイプ「uniqueidentifier」のフィールドを持つ「ヘッダー」テーブルがあります...新しいレコードを挿入するときに、データベースに値をレコードに割り当てさせ、ヘッダーテーブルレコードを新しいGUIDで更新する必要がありますデータベースから。現時点では、テーブルに追加する新しいレコードの id guid フィールドはすべてゼロです。そのため、2 番目のレコードを追加しようとすると、重複キーで失敗します。
答えを探しているうちに、この投稿に出くわしました: SQL Server 2008 GUID column is all 0's
dbml で「Auto Generated Values」と「Auto Sync」をそれぞれ「True」と「OnInsert」に設定することが言及されています。
私の問題は、SQLMetal コマンドを実行したときに作成されなかったため、dbml ファイルがないことです。代わりに .map ファイル生成パラメータを使用しました.「/dbml」フラグがあることに気付きましたが、どれを使用すればよいかわかりません..
map ファイルの代わりに、または map ファイルと同様に dbml ファイルを使用する必要がありますか?
または、コードで新しいヘッダーレコード変数を作成するときに、次のようなことを言って、システムにDBの生成されたID値を使用してレコード変数を更新するように指示する方法はありますか....:recHdr.Id .AutoGeneratedVales = True; recHdr.Id.AutoSync = OnInsert;
どうもありがとう...
linq-to-sql - sqlmetal を使用して dbcontext を生成すると、テーブル値の UDF 列が null 許容として作成されます
さまざまな種類のさまざまな列を持つインライン テーブル UDF を作成しました。
ただし、一部の列は非 null に設定されていますが、sqlmetal.exe はそれらを null 許容型として作成しました。
null 許容ではない正しい型を取得できないのはなぜですか?
.NET Framework バージョン 4 には、sqlmetal (Microsoft (R) Database Mapping Generator 2008) バージョン 4.0.30319.1 を使用しています。
sql-server-ce - INotifyPropertyChangingとINotifyPropertyChangedを追加しないようにSqlMetalに指示できますか?
現在、SQL Server CompactEdition3.5データベースのデータコンテキストを生成するためにSqlMetalを使用しています。
このデータベースは、Windows Phone 7アプリケーションで使用され、からのみ読み取られます。このため、データベースはユーザー/システムによって変更されないため、プロパティの変更を追跡するロジック(INotifyPropertyChangingおよびINotifyPropertyChangedの実装)をスキップしたいと思います。
この余分なロジックを除外するようにSqlMetalに指示する方法はありますか?
または、コンテキストとクラスを自分で作成する以外に、生成されたファイルを(ほとんど)そのままにしておくと、パフォーマンスを向上させるために比較的簡単な変更を加えることができますか?
c# - LINQ toSQLおよびsqlmetalSystemを使用したC#のエラー。InvalidCastException:指定されたキャストが無効です
本番サーバーまたは別の開発者のマシンで作成したコードを実行すると、この行でクラッシュします。
CalcIdentは、文字列としての単なるGUIDです。
ローカルデータベースでsqlmetalを実行しました。ここで、Ac_CalcDetailは、この強く型付けされたコードとクラスAc_CalcDetailを作成するためのメインテーブルです。問題は、ここで本番サーバーまたは他の開発者のマシンの1つでコードを実行するときです。LINQを1年以上使用していて、問題が発生したことはないので、これについて本当に混乱しています。以前、私が得た例外は、どのフィールドが欠落していて、どれが素晴らしいかという非常に具体的なものでしたが、私の調査から、このエラーは、間違ったデータ型を持つ特定のフィールドである可能性があります。悪夢であり、このエラーだけでデバッグすることは完全に不可能です。
現在のところ、唯一の解決策は、データベースをSQL Server Management Studioにバックアップしてから、他のすべてのユーザーにこれを使用させることだと思います。私たちは小さな会社なので、自分のデータベースに対してやりたいことを何でもする傾向があります。次に、さまざまなSQLスクリプトを作成して、ドロップボックスフォルダーに配置し、データベースを同期します(または少なくとも同期していると思ったもの)。これが、LINQの使用を停止するか、より高度なSQLのもの(SQLリポジトリまたはSQLデータベース比較ツールなど)の使用を開始する必要があることを意味するかどうかはわかりません。
私たちのデータベースは(もしあれば)何年もの間完全に同じではなかったので、なぜこのエラーが今起こっているのか、そしてなぜエラーメッセージが何も言わないのかわからないのですが、それは非常に奇妙です!