問題タブ [subsonic]
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.
database - SubSonic.QueryとSubSonic.SqlQuery
私はSubSonic.Queryをずっと使っていましたが、WHEREを追加して「ISNULL」を実行できない日まで、SubSonic.SqlQueryが存在し、「IsNull()」の関数を持っていることに気付きました。ソースコードをチェックした後、QueryとSqlQueryはまったく継承されないので、それらの主な違いと、どちらを使用するかを決定する方法は何ですか?
編集:「Comparison.Is」を使用して実際に「ISNULL」を実行できることに気づきました。SqlQueryとQueryの両方がほぼ同じことを実行できるため、これはさらに混乱を招きます
subsonic - サブソニック プリロード オブジェクトと子
サブソニックで子グラフを含むオブジェクトのリストを読み込もうとしています。dataloadoptionsでlinq to sqlを使用してそれを行う方法を知っています
私はこのグラフを持っています
製品 - 場所 - 価格
new Select().From().Where(Product.Columns.Id).IsEqualTo(productId).ExecuteSingle();
製品オブジェクトに場所と価格をプリロードして、遅延ロードが多くのクエリを引き起こさないようにしたいと考えています。
ありがとう
sql-server-2008 - sys.servers でサーバー 'dbo' が見つかりませんでした
データベースにクエリを実行するサービスがたくさんあります。それらはすべて正常に動作しますが、ストアド プロシージャを呼び出す 1 つのサービスで次のエラーが発生します。
sys.servers でサーバー 'dbo' が見つかりませんでした。正しいサーバー名が指定されていることを確認してください。必要に応じて、ストアド プロシージャ sp_addlinkedserver を実行して、サーバーを sys.servers に追加します。
他のすべてのストアドプロシージャが正常に機能し、これが機能しない理由がわかりません...
ちなみに、データアクセス層にはSubSonicを使っています。
.net - SubSonic 動的スキーマ: SelectList
シナリオ
私は最新のプロジェクトに SubSonic を使用しています。まず最初に。このプロジェクトは .net 3.0 の使用に制限されており、SubSonic は素晴らしいものでした。大好きです。
ただし、カスタマイズには問題があります。顧客は、2 つの SQL Server 2005 データベースを使用するように要求してきました。そのうちの 1 つは他のデータベースをレプリケートし、一部の列は除外します。
一見、これは簡単なことのように思えます。ただし、SubSonic はデフォルトですべての列を取得するため、SQLException が発生します。テーブルごとに選択リストをエレガントに制限したいと思います。
たとえば、次のコードでうまくいきますが、クエリを新しく作成するたびにそうする必要はありません。
質問
上記のメソッドはコードをFetchByX
肥大化させ、SubSonic によって生成された組み込みメソッドでは機能しません。テーブルごとにデフォルトの SelectListをエレガントに設定する方法はありますか?
ノート
部分クラスで実行時にスキーマから列を削除しようとしましたが、列がコレクションColNameColumn
内の特定のインデックスを探しているように見えるColumns
ため、計画は失敗しました。
分かってる
「あなたはばかだ、なぜあなたはこれをするのですか?」答えます。より良い方法がある可能性が高いことは理解しており、これは少しハッキーに思えますが、これが私が目指しているポイントです。嫌がらせではない解決策が必要です。
subsonic - SubSonic 無視列
SubSonic でテーブルのいくつかの列を更新する方法はありますか?
例えば
たとえば、 users.Password = user.password;という行をコメントアウトすることは可能ですか? このフィールドが更新されないようにします (ただし、データベースで null に設定されることもありません)。
sql-server - Subsonic で接続プーリングは正しく機能していますか?
リモート マシン上の SQL サーバーで使用すると、サブソニック orm で接続プーリングが機能しないという報告を受けています。おそらくプロファイラーを使用して、彼らがこれをどのように監視しているかはわかりません。
Subsonic は、orm レイヤーで行うことになっているように遅く開き、早く閉じますが、実装に問題があり、接続が多すぎますか?
unit-testing - Subsonic の遅延読み込みプロパティをどのように単体テストしますか?
テストしたい次の関数があるとします。
現在、Order クラスは SubSonic で生成されたクラスであり、その User プロパティは遅延ロードされています。つまり、order.User.Email を呼び出すと、実際に SQL ステートメントを実行して User をフェッチします。
これを単体テストしたい場合、単体テストがデータベースにヒットすることを本当に望んでいないため、問題が発生します。
私の現在の解決策は、 CancelOrder 関数を次のようにリファクタリングすることです。
次に、_userRepository.GetUserByID() 呼び出しをスタブ化して、ハードコーディングされた User オブジェクトを返すことができます。
これはこれを行うための最良の方法ですか?すべてのデータ アクセスは、プロパティ内に隠されるのではなく、リポジトリを介して行われるため、2 番目の実装の方がクリーンであると主張できると思います。
subsonic - Subsonic.Select から SQL 関数を呼び出す
サブソニック フォーラムで次の質問をしましたが、回答が 1 つしかないようだったので、ここにも投稿して、誰かがこの問題にさらに光を当てることができるかどうかを確認したいと思いました...
Select ツール (または Query ツール) を使用して、SubSonic で次の SQL ステートメントを作成したいと考えています。これは、「SPLIT()」というカスタム関数を使用しています。
SELECT * FROM VwPropertyList
WHERE VwPropertyList.idCreatedBy = 123
AND VwPropertyList.idCounty = 45
AND 29 IN (SELECT Item FROM SPLIT(DistrictGroupList, ','))
(この SQL の最後の部分では SPLIT 関数を使用しています)
私の亜音速の同等物は次のようになります...
Dim mySelect As New SubSonic.Select
mySelect.From(VwPropertyList.Schema)
mySelect.Where(VwPropertyList.Columns.IdCreatedBy).IsEqualTo(123)
mySelect.And(VwPropertyList.Columns.IdCounty).IsEqualTo(45)
mySelect.And(29 .In(New SubSonic.Select("Item").From("SPLIT(" & VwPropertyList.Columns.DistrictGroupList & ", ',')"))
これは最後の部分のために機能しません..「AND 29 IN (SELECT Item FROM SPLIT(DistrictGroupList, ','))」を Subsonic.Select に追加するにはどうすればよいですか?
subsonic フォーラムから得た応答は、Subsonic.Select を廃止し、ハードコーディングされた InlineQuery() ステートメントに置き換えることを提案しました..のように:
Dim SQL as String = "Select " & VwPropertyList.Columns.Item
SQL = SQL & " From " & VwPropertyList.Schema.TableName
SQL = SQL & " Where " & VwPropertyList.Columns.IdCreatedBy & " = @CreatedBy "
SQL = SQL & " And " & VwPropertyList.Columns.IdCounty & " = @County "
SQL = SQL & " And @DistrictGroup IN (Select Item From SPLIT(DistrictGroupList,',')"Items = SubSonic.InlineQuery().ExecuteTypedList(Of MyItem)(SQL, 123,45,29)
ページング機能などを利用できるように、可能であれば SubSonic.Select を使用したいと思います。
何か案は?