問題タブ [dblinq]
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.
sqlite - DBLinq >> DBMetal ツールを sqlite で使用するにはどうすればよいですか?
sqlite データベースからコード ファイルを生成するコマンド ライン ツール dbmetal のサンプルを提供してください。
c# - 削除直後にオブジェクトがデータベースに再挿入される (DbLinq)
一般的な構造が次のような MySql データベースがあります。
外部キーを許可するために InnoDB を使用してProbeDefinition
いますON DELETE CASCADE
。
私が抱えている問題はProbeDefinition
、コードで a を削除すると、すぐに再挿入されることです。カスケード削除は適切に行われるため、他のテーブルはクリアされますが、LINQ to SQL が理由もなく挿入を送信しているようです。データベースの ChangeSet プロパティを確認すると、削除が 1 つ表示され、挿入が表示されません。
削除を実行するために、次の小さなコードを使用しています。
MySql のログは、これが実行されたときに実行されている次のコマンドを示しています。
この不必要な原因は何INSERT
ですか? Manufacturer
aをまったく同じ方法で削除すると、次のログで正しく削除されることに注意してください。
編集:さらにテストすると、これは ListBox に のリストを入力した後にのみ発生するようですProbeDefinition
。
次のスニペットが実行される前後に、上記の削除コードを実行してみました。
上記のコードが実行される前にオブジェクトは適切に削除されますが、この時点以降はいつでも、削除後に挿入を実行します。オブジェクトがどこかで参照されているという事実が気に入らないのですか?
中間ウィンドウから定義を削除することをテストするために実行しているコードは次のとおりです。
c# - dblinq はどの程度成熟していますか?
データベースと通信する必要があるアプリケーションに取り組んでいます。アプリケーションは C# で記述されています。私は、データベースとそのテーブルを表すために LINQ と自動生成クラスにかなり夢中になっているので、.NET は LINQ to SQL のサポートのみを備えているため、最初に SQL の使用を検討しました。現在、私は主に SQL サーバーのスケーリングに費用がかかる可能性があることと、私を含む社内の人々が MySQL に精通していることから、MySQL に傾倒しています。これが dbLinq の出番です。私が読んだところによると、dbLinq は単純なクエリでは問題なく動作しますが、より複雑なクエリでは機能しなくなる可能性があります。dbLinq を使用した経験を共有していただけますか? dbLinq はまだ実験的なものと見なすべきですか、それとも多くの問題なく使用できると期待できますか?
ありがとう、バス
編集:
DbLinq は複数の外部キーを処理できないと読みましたが、これがまだ当てはまるかどうかについてコメントできますか?
c# - ORM には、SQLite 列に日時またはブール値が含まれていることを判断する方法がありますか?
次のプロジェクトで SQLite を使用することを考えていましたが、適切なデータ型が不足しているように見えるのではないかと心配していdatetime
ますbit
。
DbLinq (またはその他の ORM) を使用して C# クラスを生成すると、プロパティのデータ型は「ばかげた」ものになりますか? 日時データはタイプstring
またはタイプのプロパティに配置されますかdouble
? ブール データはタイプのプロパティに配置されますint
か?
はいの場合、どのような影響がありますか? より具体的なデータ型を持つクラスの 2 番目のレイヤー全体を作成し、一連の変換とキャストを実行する必要があるシナリオを想定していますが、恐れているほど悪くはないかもしれません。これまたは同様のシナリオの経験がある場合、どのように対処しましたか?
database - DbMetal は、SQLite で繰り返される外部キー参照でチョークします - アイデアはありますか?
DbMetal で SQLite データベースを処理するのに苦労しています。私はついに問題を切り分けました。テーブルが同じ列への 2 つの外部キー参照を持つことは許可されません。
たとえば、次の 2 つのテーブルを含む SQLite データベースは失敗します。
次のエラーが表示されます。
DbMetal: シーケンスに一致する要素が複数含まれています
2 番目の外部キー参照を取り除けば、エラーは発生しません。
したがって、これは機能します:
しかし、Person テーブルを参照するには、両方の "person" 列が本当に必要です。
これについてバグレポートを提出しましたが、当面は回避策を使用できます。何か案は?
c# - LinqToSqlテーブルをどのようにキャストしますかテーブルとしてここでTEntity:IEntity?
SQLiteデータベースでDbLinqを使用しようとしていますが、をITable
としてキャストしようとすると問題が発生しQueryable<TEntity>
ます。
DbLinq(Issue 211)に既知のバグがあり、これが私の問題の原因である可能性がありますが、コードが正常であることを確認し、健全である場合は、回避できることがあるかどうかを確認したいと思いました。不具合。
キャストを実行しようとする一般的なリポジトリメソッドは次のとおりです。
これはコンパイルされますが、のインターフェイスを渡しIPerson
、TEntity
テーブル内のエンティティのタイプがPerson
(where Person : IPerson
)の場合、DbLinqから次のエラーが発生します。
S0133:QueryMethodQueryable.Castを実装します。
なぜ私はこれをしようとしているのですか?
実行時までエンティティのタイプを知らないライブラリプロジェクトがありますが、エンティティのインターフェイスは知っています。そのため、ライブラリプロジェクトがデータを消費できるように、インターフェイスタイプにキャストしようとしています。
質問:
- 私は不可能なキャストを試みていますか、それともこれは間違いなくDbLinqのバグですか?
- 他にどのように問題を解決することができますか?
アップデート
リポジトリクラスを作り直したので、TEntity
とが必要になりますTEntityBase
。ここTEntity
で、はエンティティの実際のタイプであり、TEntityBase
キャストしようとしているインターフェイスです。重要なのはwhere
、クラス定義に次の句があることです。
Table
これにより、プロパティをのTable<TEntity>
代わりに保存できるようになり、 (Stephenが提案したように)ITable
使用できるようになります。AsEnumerable()
改訂された方法は次のとおりです。
そしてこれまでのところ、それでうまくいくようです。
c# - DataContext で Dispose() を呼び出した後に DbLinq クエリを列挙できるのはなぜですか?
更新- 答えは明らかに、DbLinq がDispose()
適切に実装されていないことです。ああ!
以下はあらゆる種類の誤解を招くものです-結論:DbLinqは(まだ)LinqToSqlと同等ではありません.最初にこの質問をしたときに想定したように. 注意して使用してください!
DbLinq でリポジトリ パターンを使用しています。私のリポジトリ オブジェクトは を実装IDisposable
し、Dispose()
メソッドDispose()
はDataContext
. リポジトリを使用するときはいつでも、次using
のようにブロックでラップします。
このメソッドは を返すので、私の理解が正しければ、次の例のように (たとえば、リストまたは配列に変換するか、ループで使用することによって) をトラバースするIEnumerable<Person>
まで、データベースのクエリは実際には行われません。Enumerable<Person>
foreach
この例でDispose()
は、 は set の直後に呼び出されますpersons
。これは であり、IEnumerable<Person>
呼び出されるのはそのときだけです。
だから、3つの質問:
- これはどのように作動しますか?
DataContext
が破棄された後も、破棄されたオブジェクトが結果をデータベースに照会するにはどうすればよいDataContext
ですか? - 実際には何をし
Dispose()
ますか? - を処分する必要はないと聞いたことがありますが (たとえば、この質問
DataContext
を参照してください) 、それは悪い考えではないというのが私の印象です。DbLinq を処分しない理由はありますDataContext
か?
mysql - 本番システム用の DBLinq?
私たちは、C# コード ビハインドを使用した ASP.NET Web アプリケーションに取り組んでいます。データベースは InnoDB を使用した MySQL 5.1 です。データ アクセス層は、ADO.NET を使用してストアド プロシージャを呼び出し、結果セットからさまざまなデータ構造を構築します (オブジェクト マッピングなし)。これは問題なく動作しますが、少し冗長です。
驚くべきことではありませんが、データ モデルの最初のバージョンを設計するときにいくつかの間違いを犯しましたが、その経験によって私たちは賢くなり、データ モデルをリファクタリングすることにしました。データ アクセス層を変更する必要はありませんが、そのためのオプションも検討しています。
最近の ORM ツールの人気を無視することは困難です。彼らに慣れていないために、私たちは遅れているか何かのように感じます。それだけでなく、データ モデルを適切に説明するオブジェクト モデルを既に設計しています。検討する主な ORM ツールは、NHibernate、ADO.NET Entity Framework、および LINQ to SQL です。完全なORMツールよりも軽量であることを(SOで)読んだので、LINQ to SQLをお勧めします。
ORM ツールを使用することの欠点の 1 つは習得に時間がかかることだと考えていますが、LINQ を使用することで、記述しなければならないコードの量が減り、長期的には時間を節約できることはすでにわかっています。ただし、SQL Server ではなく MySQL を使用しています。
私の質問は、DBLinqは実稼働システムで十分に機能するでしょうか? それとも、LINQ to SQL は、SQL Server 2008 に移行する十分な理由になるのでしょうか? ちなみに、私は MySQL よりも SQL Server を使用したいと思っていますが、コストは明らかな欠点です。BizSpark で 3 年間使用した後、6,000 ドルを支払う必要があります。または、代わりに他の ORM ツールを検討する必要がありますか? それとも、誇大広告を無視して ORM ツールを使用せずに、LINQ to DataSetを利用するべきでしょうか?
SO で DBLinq に関する情報を検索しましたが、DBLinq タグの付いた質問は 17 件しか見つからなかったので、人気がないようです。
編集
MySQL用のdotConnectはLINQをサポートしていますが、それは別のオプションです。
そのドライバーが LINQ クエリを作成するのにどれだけうまく機能するかについて誰か話してもらえますか?
c# - MySQL/Dblinq プロジェクトでの言語/文化の変更
データベースのプログラミングにはあまり詳しくありませんが、C# で Dblinq を使用してアクセスする Mysql データベースがあります。現在、日付や数字などを入力するときは英語表記が使用されていますが、顧客はドイツ語を必要としています。データベースを英語からドイツ語に切り替えるにはどうすればよいですか? (データベースはまだ空です。必要に応じて簡単に再作成できます)
前もって感謝します!
キリスト教徒
sql - DbLinqおよびSQLiteでLINQtoSQLを使用して実行される正確なクエリを見つけるにはどうすればよいですか?
私の小さなプロジェクトでは、SQLiteでDbLinqを使用しています。舞台裏で実行される実際のSQLクエリを確認する方法はありますか?
インターンシップでSQLServerの監視プログラムを覚えていますが、SQLiteはまったく別の獣です。