問題タブ [table-splitting]
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.
entity-framework - Entity Frameworkのテーブル分割 - 遅延ロードされたプロパティを初期化する方法は?
Entity Framework 6.0 を使用して、テーブル分割を実装して、BLOB データを含む列を持つテーブルのクエリ パフォーマンスを改善しようとしています。このチュートリアルの推奨事項に従っていますが、実際に説明どおりに機能します。
これは、私の分割テーブルの 1 つにマップされるエンティティ クラスの非常に単純化された例です ...
DbContext
... および関連する実装内の対応する構成コード...
遅延読み込みContent
プロパティがRequired
Entity Framework によるものであることを考えると、それを含むMyEntity
クラスのコンストラクターで既定値に初期化するのが賢明なようです ...
...これにより、必要なプロパティ値の初期化を忘れて例外がスローされるリスクなしに、クラスの新しいインスタンスを作成して部分的に設定できます。
私は通常、同様の手法を使用して EF エンティティのコレクション プロパティを初期化し、正常に動作します。ただし、上記のシナリオでは、コンストラクターでのこの初期化には予期しない効果があります。データベースから既存のエンティティ インスタンスを取得するとき、遅延読み込みプロパティのデータベース値は無視され、空の既定値が優先されます。
これは私には非論理的に思えます。Entity Framework は、最初に既定のコンストラクターを呼び出してから、作成されたインスタンスに独自のプロパティ値を適用することによって、エンティティ オブジェクトを作成しませんか? もしそうなら、これは私のデフォルトContent
のプロパティ値を、MyEntityContent
データベースのデータに基づいて の新しいインスタンスで上書きする必要があります。これは、遅延ロードされたコレクション プロパティで動作するように見える方法です。
私が期待している方法でこれを行うことができない場合、遅延ロードされたプロパティを初期化するための代替手法はありますか?
c# - EF6テーブル分割と複数分割の共有主キー
レガシー データベース システムを .NET + Entity Framework 6 (コード ファースト POCO) + PostgreSQL にアップグレードしています。プログラミングを簡単にするために、大きなテーブル (200 以上のフィールド) を複数のエンティティに分割したいと考えています。
EF6 が「テーブル分割」をサポートしていることを知り、うれしく思いました。単一のテーブルを複数のエンティティにマッピングして、フィールドを分割します。
ただし、これを実装しようとしてオンラインで多くのページを読んだところ、複数回分割すると問題があることが確認されました。Entity Framework では、プリンシパル エンティティだけでなく、テーブルにマップされたすべてのエンティティ間のナビゲーション プロパティが必要です。上記の私のシナリオでは、これには 21 個の無意味なナビゲーション プロパティが必要です。わざわざ双方向にするのであれば 42 個です。
参照: EF-Code-First を使用して大きなテーブルを複数の個別の型に分割する方法
共有主キーを持つ複数のテーブルを使用することをお勧めします。私にとってはオプションです。ただし、EF の肥大化した SQL クエリ生成と、複雑なクエリを使用する PostgreSQL の場合によってはでたらめなクエリ オプティマイザを考えると、このオプション (100GB 以上のデータベース) のパフォーマンスに懸念があります。
要約する:
テーブル分割
長所: 最高のクエリ パフォーマンス、データベース レイヤーでの実装が最も速い
短所:私のモデルとOnModelBuilding()メソッドをがらくたで汚染し、他の開発者を混乱させます
複数のテーブルで主キーを共有
長所: 最もクリーンなモデルとコード、非レガシー データベースに推奨されるソリューション
短所: 実装に余分な作業が必要で、パフォーマンスが低下する可能性があります
私の質問:
1) EF6 は 2 つ以上の分割でテーブル分割を改善しましたか?
2) 考慮していない要因はありますか?
3) 他に選択肢はありますか?
PS [ComplexType] の使用には興味がありません
entity-framework - EF6 はテーブル分割/共有主キー + 基本クラスのモデルを構築できませんか?
問題
前の質問のようにテーブル分割を使用して、約 7 個のエンティティで大きなテーブル (200 以上のフィールド) を共有しようとしています。
EF6 では、プライマリ モデルから子モデルへのナビゲーション プロパティだけでなく、すべての子モデル間でのナビゲーション プロパティが必要です (これは最悪です)。
手動ソリューション
これは手動で行うことができます:
スムーズなマッピング:
これは機能します。しかし、これは 7 つ以上のモデルではうまくスケールアップしません。
#1 を改善しようとする
継承 + DRY 原則を通じて改善したいと思います。
しかし、これは「シーケンスに複数の一致する要素が含まれています」という最初のリクエストで失敗します:
改善の試み #2
私はそれらをabstractと宣言できると思ったので、少なくともプログラマーは正しいメンバーを実装することを余儀なくされます(派生クラスごとに再宣言するのはまだ面倒です):
しかし、これは同じエラーが発生したときに失敗します。は??クラス定義は、「仮想」ではなく「オーバーライド」と宣言されていることを除いて、作業コピーと同一です。E/F が、PropertyInfo.ReflectedType に関係なく、PropertyInfos または何かにインデックスを付けているかのようです。
改善の試み #3
インターフェイスを使用してパターンを強制することもできますが、かなり奇妙に見え始めている各クラスでインターフェイスを宣言する必要があるため、これはあまり好ましくありません。
は?
これは E/F のバグですか? 基本クラスのプロパティを派生クラスのプロパティと同じように扱うのに苦労していますか?
説明が長くなってしまい申し訳ありません、今朝の全調査のまとめです。
r - data.frame と行の分割... データに適した解決策が見つかりませんでした
テーブルで少し苦労しています。いくつかの変数を (R を使用して) 分割しようとしていますが、1 つの特定の列で問題が発生しています。
私のデータセットは次のようなものです:
グループ化されているすべての地域を分離したいと考えています。これまでのところ、すべての列を解決しましたが、「地域」の列は次のとおりです。
その列を修正する方法がわかりません: 例: '12..13': 12 は Ref=A に、13 は Ref=T に入力する必要があります (それぞれ 1 番目と 2 番目の文字)。一部の列には 3 文字 (および対応する範囲: 22..24) があり、一部の列にはそれ以上の文字があるため、事態は複雑になります。
どうすれば解決できますか?ここ数日で解決策を探していましたが、まだ解決方法がわかりません。既にどこかで解決済みでしたら申し訳ありません。PS: 'Region' 列で strsplit するには、次を使用する必要があることを認識しています。
セパレーターとして。
sql - SQL Server 2012 のテーブルの 1 つのパーティションから COUNT(*) を取得する方法は?
私のテーブルには 700 万のレコードがあり、ID に従ってテーブルを 14 の部分に分割します。各パーティションには 500 万のレコードが含まれ、パーティションのサイズは 40G です。クエリを実行して 1 つのパーティションのカウントを取得したいのですが、すべてのパーティションをスキャンし、クエリの時間が非常に長くなります。
他のパーティションをスキャンせずに、1 つのパーティションのみでクエリを実行するにはどうすればよいですか?
c# - テーブルの分割 - テーブルを 2 つの完全に独立したエンティティに分割することは可能ですか?
私は単純なユーザーテーブルを持っています:
これを EF6 で 2 つのエンティティに分割したいと考えています。ユーザーとユーザーパスワード。これらは 2 つの非常に異なるビジネス ニーズを表していますが、たまたま同じテーブルに存在します。
そこで、2 つのエンティティを作成します。
私はそのような地図を持っています
しかし、これらのエンティティを使用すると、次のエラーが発生します。
Message = "エンティティ タイプ 'UserPassword' と 'User' はテーブル 'User' を共有できません。これらは同じタイプ階層にないか、それらの間で主キーが一致する有効な 1 対 1 の外部キー関係を持たないためです。"
関係を作りたくない。階層ごとにテーブルを設定するのに問題があります。私は差別者を望んでいません。私は本当に、目立たない同じテーブルに到達するための2つの別々の方法が必要です. 2 つのコンテキストを作成する以外にこれを行う方法はありますか?
rapidminer - Rapidminer 5 の新しい列での値の分割
Rapidminer 5 では、列の値を分割し、新しい値を新しい列に入れたいと考えています。すなわち:
BIC|"Cognome"|"Nome"|"Via_completa"|"Civico"|"Esponente"|"CAP"|"Frazione"|"Comune"|"Provincia" 50417273|"ACCROCIA"|"ALESSANDRO"|"VIA NAPOLI "|"66"||"00100"||"ミラノ"|"MI"
「Via_completa」列は、値「VIA」と「NAPOLI」から作成されます。私のデータセットに従って住所を正規化するには、列「Via_completa」で値「VIA」と「NAPOLI」を分割し、「DUG」という新しい列を作成し、値「VIA」を新しい列に配置します。このような:
BIC|"Cognome"|"Nome"|"DUG"|"Via_completa"|"Civico"|"Esponente"|"CAP"|"Frazione"|"Comune"|"Provincia" 50417273|"ACCROCIA"|"ALESSANDRO" |"VIA"|"ナポリ"|"66"||"00100"||"ミラノ"|"MI"
Excel には、「列へのテキスト」機能があります。Rapid miner にこの機能を実行するオペレーターはいますか? ありがとう、フリソ