1

私は次のようなEntity Frameworkモデルを持っています:

Category
Content
NewsCategory (Inherits Category)
News ( Inherits Content)

newscategory と news の両方に TPH 継承を使用します。DB に TYPE フィールドがあります。type=1 の場合は News ( content テーブル内) を意味し、type=1 の場合は ( NewsCategory テーブル内) を意味します。

カテゴリとコンテンツには多対多の関係があります!

しかし、ニュースを追加したい場合、他のタイプのニュースを追加できないようにするにはどうすればよいですか?

ニュースを追加すると、categoryId が必要になり、1、2 またはその他の ID を使用できます。

#

実際、ニュースとニュースカテゴリとカテゴリとコンテンツの間に多対多の関係を作成したい場合。コンテンツとその関係について何も知らないニュースが欲しい

4

2 に答える 2

0

データベースは TPH 継承の意味を理解していません。カテゴリとコンテンツ テーブルの間に多対多の関連付けがあり、実際にカテゴリとコンテンツ間の関係を作成できます。データベース レベルの TPH でこれを回避することはできませんが、エンティティ レベルでは、派生型でのみナビゲーション プロパティを使用する必要があるため、アプリケーション レベルでの処理は簡単です。

于 2012-08-12T07:46:06.200 に答える
0

私は、定義する継承クラスに付随する列挙型を定義する傾向があります。

public enum CategoryType
{
    News = 1,
    Photography,
    PopularMusic
}

public enum ContentType
{
    Article = 1,
    Image,
    Video 
}

コードがニュース項目を書き込むとき、2 つのテーブルが TypeId を持つことができます。

Category.TypeId = (int)CategoryType.News; 

Content.TypeId = (int)ContentType.Article;

これを行う必要があるコードを避けることはできませんが、typeId フィールドに INT 値をスローするだけで、より明確になり、エラーが発生しにくくなります。

あなたの場合、Typeフィールドがどこにあるかなど、あなたの関係がわかりません(カテゴリに1つ、コンテンツにも1つあると仮定しました)。type=1 means ( in NewCategory table)質問に書いたときに何かを見逃したようです。

ニュースはカテゴリではなくコンテンツから継承されるため、ニュースを追加するときにカテゴリ ID を追加する必要がある理由がわかりません。

于 2012-08-12T07:57:45.803 に答える