linq to sql を使用して 2 つのデータベース エンティティ間の関係を作成しようとすると問題が発生します。この基本的な Microsoft ガイドに従っていますが、機能しません。
木のような構造を保存しようとしています。ConfigUnit クラスには、アイテムのカテゴリに関する情報が含まれ、ツリー名とルート ノードが格納されます。
storeItem には、そのツリーの各ノードの情報が含まれています。
[Table(Name = "ConfigUnit")]
public class ConfigUnit
{
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public int cuID;
...
private EntitySet<storeItem> _rootNode;
[Association(Storage = "_rootNode", ThisKey = "cuID", OtherKey = "cuID")]
public EntitySet<storeItem> rootNode
{
get
{
return _rootNode;
}
set
{
_rootNode = value;
}
}
}
そして storeItem クラス:
[Table(Name = "storeItem")]
public class storeItem
{
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public int siID;
[Column]
public int cuID;
private EntityRef<ConfigUnit> _CU;
[Association(Storage = "_CU", ThisKey = "cuID")]
public ConfigUnit ConfigUnit
{
get { return this._CU.Entity; }
set { this._CU.Entity = value; }
}
...
}
ただし、コードを実行し、DataContext.CreateDatabase() を使用してデータベースを作成すると、関係が作成されないようです。ConfigUnit テーブルには関係列がなく、後でデータベースにクエリを実行しても関係値が保存されていないようです。
私は何が欠けていますか?リンクされたマイクロソフトの記事とほぼ同じ関係を築いています。
御時間ありがとうございます!
編集: 生成された SQL コードは次のとおりです。
CREATE TABLE [ConfigUnit](
[cuID] Int NOT NULL IDENTITY,
[topID] Int NOT NULL,
CONSTRAINT [PK_ConfigUnit] PRIMARY KEY ([cuID])
)
つまり、関係はまったく生成されません。私が見つけた唯一の他の関連する問題は、エンティティの主キーが欠落している人々でしたが、私はそうではありませんでした。
編集 2: Compact エディションの代わりに完全な SQL サーバーを使用してみました。それでも同じ結果です。