基本的にすべてのクラス/オブジェクトにタグを実装する方法を探しています。製品、ブログ、ユーザー、コメントなどの可能性があります。私の考えは、どのクラスにも実装できるインターフェイスを作成することでした。そうすることで、DBに必要なものをすべて自動的に作成します。
そのようなことをする方法はありますか?または、「タグ付け可能な」オブジェクトごとにエンティティを作成する必要がありますか?
基本的にすべてのクラス/オブジェクトにタグを実装する方法を探しています。製品、ブログ、ユーザー、コメントなどの可能性があります。私の考えは、どのクラスにも実装できるインターフェイスを作成することでした。そうすることで、DBに必要なものをすべて自動的に作成します。
そのようなことをする方法はありますか?または、「タグ付け可能な」オブジェクトごとにエンティティを作成する必要がありますか?
データベースに EntityTag テーブルを作成してみませんか?
EntityType テーブルも必要です。POCO クラス オブジェクトごとに、EntityTypeId を宣言します。
例、
new Blog
{
Id = 1,
Name = "Blog 1"
}
new Blog
{
Id = 2,
Name = "Blog 2"
}
new Product
{
Id = 1,
Name = "Product"
}
new EntityType
{
Id = 1,
EntityTypeName = "Blog"
}
new EntityType
{
Id = 2,
EntityTypeName = "Product"
}
任意のオブジェクトに対してタグを作成する場合は、次のようにデータベースに新しいエンティティ タグ エントリを作成するだけです:-
New EntityTag
{
EntityId = 1,
EntityTypeId = 1,
Text = "blog test 1 tag"
};
この EntityTag は、ブログ テスト 1 に関連付けられます。
New EntityTag
{
EntityId = 2,
EntityTypeId = 1,
Text = "blog test 2 tag"
};
この EntityTag は、ブログ テスト 2 に関連付けられます。
ついに、
New EntityTag
{
EntityId = 1,
EntityTypeId = 2,
Text = "Product tag"
};
エンティティの型を取得するためのメソッドを実装する必要がありますが、これは非常に簡単です。あなたが提案したようにインターフェースをボルトで固定します。インターフェイスを継承する各 POCO オブジェクトの部分クラスを作成できます。ここで、EntityTypeName を設定できます。
お役に立てれば。