非常に一般的なデータベース コードを書いています。別のエンティティに関連するエンティティ セット内の型のセットをクエリする方法を見つけたいと思います (LINQ to SQL EntityFramework、データベース ファーストを使用)。
したがって、たとえば、製品がカテゴリに属している可能性があります。
SELECT * FROM Products p INNER JOIN Categories c ON p.CategoryId = c.Id
私のデータベースでは、p.CategoryId は非 NULL になる外部キー制約です。(つまり、製品はカテゴリに属している必要があります)。
ここで、カテゴリから削除しようとすると、エラーが発生します。これは、カテゴリに関連する製品がまだあり、その関係に CASCADE DELETE が適用されていない (またはしたくない) ためです。
私がやりたいことは、DataContext ライブラリを調べて、カテゴリが製品によってキー化されていることを動的に判断することです。そのため、カテゴリから削除する場合は、最初に製品から削除する必要があります。
「動的に」とは、コードがタイプまたは関係を事前に認識していないことを意味します (製品またはカテゴリ エンティティについて具体的には認識していません) が、リフレクションを使用して DLL を評価し、これらの関係を解決します。
DataContext 関連のコードを調べたところ、特定のエンティティの EntityRef プロパティを確認できました (問題の半分は解決されました) が、これらの関係が必須かオプションか (つまり、NON -NULL または NULLABLE) を基になるデータベースで使用します。
?