問題タブ [entity-relationship]
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.
c# - 手動で作成した Linq2Sql テーブルの関係がコードに表示されるのはなぜですか?
Linq2Sql DBML ファイルで関連付けたいビューがいくつかあります。
右クリックして [関連付けの追加] を選択し、子から親への関連付けを手動で作成しました。次に例を示します。
しかし、私のコードではこれを行うことはできません:
手がかりはありますか?データベースにリレーションシップが存在し、存在しない場合と存在しない場合は、これを行うことができます。
java - 別の結合テーブルなしで @OneToMany を休止状態にする
次のデータベース スキーマを検討してください。
User.groupId = UserGroup.id であるため、ユーザーは 1 つのグループのメンバーにしかなれませんが、ユーザーグループは多数のユーザーで存在できます。ここまでは問題ありません。Hibernate でエンティティを作成しましょう。ここにありUser
ます:
ここにありUserGroup
ます:
"Table mydb.usergroup_user' doesn't exist"
結合テーブルが必要なため、エラーが発生します。私のデータ構造は、このアプリケーションが置き換える他のアプリケーションとの相互運用性のために「固定」されているため、結合テーブルを作成しません。また、必要ないはずです。List<User> users
単純に User where のリストを作成するにはどうすればよいUser.groupId == UserGroup.Id
ですか?
sql-server - linq2sqlで関係/外部キーを使用していますか?
誰か助けてもらえますか?
Reservation(prim key)テーブルとInsurance(for key)テーブルの間に関係を作成し、linq2sqlにインポートして、自動的に作成されたc#ファイルをチェックし、reservation.MyFieldNamesなどに加えてreservation.Insuranceを確認しました。 reserved.Insurance Insuranceのフィールド名が表示されません-何かが足りませんか?
GetInsurancesなどを呼び出す必要がありますか?何も表示されません。実際、保険はLinq.entitysetタイプです。
また、予約テーブル(これは素晴らしくて簡単でした)を作成してから、Ilistなどから保険(つまり1対多)を自動的に「注入」したいと思っていました。
これは不可能ですか、
どんな助けでも本当に感謝します
ps T4 Toolboxを介して自動的に作成されたc#dtoファイルを作成しましたが、これで違いはありません。エンティティごとに個別のファイルがあります。
mysql - MySQL スキーマを生成する ERD ツール
ERD を描画し、対応する MySQL スキーマを作成する SQL を生成できるツールを探しています。追加の要件は次のとおりです。
- Windows 上で実行
- ゼロコスト
Ubuntuでも実行できる場合はボーナスポイントですが、これは「必須」ではありません.
ありがとう、ドン
database - Oracle データベース内のテーブルの関係を視覚化する方法
Access には、テーブル間の関係を図 (ER 図のようなもの) で視覚化できる方法があることを知っています。
私はオラクルが初めてです。Oracleで同じ/同様のことができるかどうか疑問に思っています。誰かがいくつかの提案をすることができますか?
c# - Entify Frameworkクエリに関連オブジェクトを入力する効率的な方法は?
オブジェクトのセットにEFを使用していて、他の2つのテーブルの一致するエントリを使用して1つのタイプのオブジェクトをクエリしたいと思います。これは、クエリをXML出力にダンプするためのものです。元のデータでは、各従業員が常にComputerオブジェクトのインスタンスを1つ以上持っていたため(以下のソリューション#2)、最初は結合を使用しましたが、必ずしもそうとは限りません。
ここでの目的のために、想像してみてください。
- Employeeオブジェクト、
- 各従業員にはEmployeeType(いくつかの固定エントリ)と
- 各従業員には、0個以上のコンピューターオブジェクト(通常は0〜3)があります。
- 各コンピューターは1人の従業員に属しており、すべての従業員がコンピューターを持っているわけではありません。
- 各従業員には、検索の基礎となる基準(部門など)があります。
だから私はいくつかの可能な解決策を見ました:
ループ内でEmployee.Computer.Load()を使用しますが、行数が10,000を超えると、パフォーマンスが大幅に低下します。
クエリで結合を使用しますが、コンピューターを持たないすべての従業員が除外されます。
Linq to Entitiesを使用
しますが、これには#1のオーバーヘッドがあるようです。コンピューターをロードすると、各従業員のデータベースにヒットします。2番目のクエリ(Computer.Employee.Divisionと一致するすべてのコンピューター)を使用してから、Employeeループで、指定された従業員の任意のコンピューターを追加します。これを実装しているときに、( ToList()を使用して)2番目のクエリを実行するだけで、EFが正しいEmployee.Computerリストに必要なオブジェクトを入力することがわかりました。
ここで、#4は10k以上ではなく2つのデータベースヒットのみでデータをロードし、EntityFrameworkは実際にオブジェクトを照合して、すべての関係を作成します。
私の質問:
- #4では、EFがEmployee.Computerリストにデータを入力するという事実は、私が信頼できるものですか?もしそうなら、私にドキュメントを教えてもらえますか?
- #4より良い方法はありますか?
更新:まあ、バガー。申し訳ありませんが、私は単にそれを吹きました。私は「Computer」テーブルとの関係に焦点を合わせていましたが、最初にnullをテストせずに明示的なEmployee.EmployeeTypeReference.Load()を使用していたという事実を見逃したため、「Computer」リストはまったく問題になりませんでした。
これは、いくつかのパフォーマンステストを実行し、Craigのソリューションをミックスに追加したときにのみ見つかりました。実際、レコードは「従業員」や「コンピューター」ではなく抽象化であり、私は(条件付きで)XML出力のすべてのフィールドを含みますが、名前、ID(PK)、ID(FK)に加えて小さいです。 「従業員」テーブルのINT。したがって、EFは投影よりもそれほど重くないオブジェクトを作成するため、パフォーマンスは同様であると私は推測しました。
とにかく、これが「経過」時間がこのクエリの前と結果のXMLが作成された後の違いであった場合の結果です。
ケース1:#2と同じですが、Include()ステートメントを使用します。
list = ve.Employee.Include("Computer").Include("EmployeeType").Where(e => e.Division.ID == divId).OrderBy(e => e.Name);
経過:4.96、5.05
ケース2:インラインLoad()を使用します:
list = ve.Employee.Where(e => e.Division.ID == divId).OrderBy(e => e.Name);
経過:74.62
ケース3:#4と同じですが、Include()ステートメントを使用します。
list = from e in ve.Employee.Include("Computer").Include("EmployeeType") where e.Division.ID == divId orderby e.Name select e;
経過:4.91、5.47
ケース4:インラインLoad()を使用します:
list = from e in ve.Employee where e.Division.ID == divId orderby e.Name select e;
経過:74.20
ケース5:* Include( "EmployeeType")を使用し、 "Computer"クエリを分離して、EFに関連付けさせます。
elist = ve.Employee.Include("EmployeeType").Where(te => te.Division.ID == divId).OrderBy(e => e.Name).ToList(); alist = ve.Alias.Where(a => a.Employee.Division.ID == divId).ToList();
経過:4.50、4.02
ケース6:クレイグの予測の提案:
elist = from te in ve.ThesaurusEntry where te.Division.ID==divID orderby te.Name select new { ID = te.ID, Name = te.Name, Type = te.EmployeeType.Name, Freq = te.Frequency, Aliases = from a in te.Alias select new { ID = a.ID, Name = a.Name } };
経過:0.73、1.25
結論
Load()は高価なので、Include()を使用するか、少なくともIsLoadedでテストしてください
投影は少し面倒ですが、EF修正よりも大幅に高速です。[「狭い」テーブルでのこの限定的なテストで]
entity-framework - ADO.NET Entity Data Model: 自動生成クラス
次のようなテーブル構造があります。
AddressID と BillingAddressID は、Addresses テーブルに存在する外部キーです。会社のクラスで取得すると予想されるもの (AddressID、BillingAddressID) を取得する代わりに、このテーブルに基づいてモデルを生成すると。私は以下を取得します:
BillingAddress を Addresses1 に置き換えているようです (なぜそうなのかはよくわかりません)。また、これは、外部キーがある場合はどこでも一般的であるようです。つまり、ID の代わりに Table を取得してから TableReference を取得します。
何が起こっているかを確認できると思います。つまり、ID だけを提供するのではなく、ルックアップを行い、ID が参照する実際のレコードを見つけます。ただし、TableReferenceフィールドが何のためにあるのかよくわかりません....
これをもう少しうまく説明できますか?
前もって感謝します。
c# - 恐ろしいデータソースからクリーンなビジネスオブジェクトクラスを生成する
私はビジネス/エンティティクラスのレイヤーの白紙の状態から始めていますが、既存のデータソースを使用しています。通常、これは簡単なことであり、Entity Frameworkを起動し、DBにポイントして、1日と呼びますが、当面は、サードパーティベンダーのデータソースから実際のデータを取得する必要があります...
- 一般的なODBCプロバイダー(SQLではない)からのみアクセスできます
- 構文、命名が非常に悪く、場合によっては、どこにでもデータが重複している
- 100をはるかに超えるテーブルがあり、これらを組み合わせると、データの1,000列/プロパティの近くになります。
このDBからの読み取り専用が必要なだけなので、更新/挿入/削除をサポートする必要はありません。アプリケーションの実行ごとに1回、「ダーティ」データをクリーンなエンティティに抽出する必要があります。
データベースを、すてきでクリーンな、名前の付いたエンティティクラスから可能な限り分離したいと思います。
次のような良い方法はありますか?
- DBテーブルから初期エンティティクラスを生成しますか?(そうすれば、クラスのプロパティの名前を変更して修正し、最初から始めるのではなく、サニタイズすることができます。)
- 1000個のプロパティセットを記述せずに、DBからのデータを私の素敵でクリーンなクラスにマップしますか?
編集:ここでの主な目標は、疑似ORMを考案することではなく、既存のコードに基づいて既存のコードを可能な限り生成し、必要に応じて微調整して、多くの手作業を排除することです。 -集中的なクラス作成タスク。
entity-framework - エンティティ モデルを追加するとエラー 3007 が発生する
エンティティ モデルをソリューションに追加すると、エラー 3007 が発生します。
これらのリンクを見つけました:
このエラーについて:
エラー 1 エラー 3007: 行 89、94 で始まるフラグメントのマッピングの問題: 非主キー列 [Person_ID] が両方のフラグメントで異なる概念サイド プロパティにマップされています - データの不一致は、対応する概念サイド プロパティが原因で発生する可能性があります独立して変更できます。
彼らの答え: Scalar プロパティの Person_ID を削除し、Navigation プロパティを残すだけで問題が解決するという彼らの結論に同意します。ただし、データベースを動的に構築しており、エンティティが頻繁に更新されるため、これはあまりスケーラブルではありません。エンティティを更新するたびに、エンティティを調べてクリーンアップする必要はありません。
私の質問: EF がエンティティを構築する方法を修正して、エラーを修正する方法はありますか? または、コードを使用してスカラー プロパティを削除する方法はありますか? おそらく、私が見落としているいくつかのオプションさえあります。
objective-c - この Core Data の例がクラッシュするのはなぜですか?
Person エンティティと Picture エンティティを持つモデルがあります。私の Picture エンティティには、Person との関係であるプロパティがあります。
私がやったことはうまくいかないので、人に写真を追加する方法の例が欲しいです。
if ([managedObjectContext save:&error]) 行でクラッシュし、コンソールにこれらのエラーがあります:
以前のビューでは、次のコードがあります