1

いくつかの単純なクラスがあります。

最初のクラス:

public class User
{
   public int UserId { get; set; }
   public string Username { get; set; }

   // ...

   public ICollection<Topic> Topics { get; set; }
}

2 番目のクラス:

public class Publication 
{
   public int PublicationId { get; set; }
   public string Title { get; set; }

   / ...

   public User Author { get; set; }
}

3 番目のクラス:

public class Topic: Publication 
{
   public string TopicContent { get; set; }

   // ...
}

モデルのデータベースを作成した後、データベースの構造は次のようになります。

ユーザー

ユーザーID

ユーザー名

出版物

パブリケーション ID

題名

トピック内容

Author_UserId

User_UserId

ご覧のとおり、テーブル Publications で同一の役割を持つ Author_UserId と User_UserId の 2 つのフィールドを取得します。

Fluent API またはデータ注釈を使用して、このフィールドを 1 つのフィールドにマージするにはどうすればよいですか?

4

1 に答える 1

1

テーブルに同じ外部キー列を持つことは不可能だと思いPublicationsます。Publication.AuthorまたUser.Topics、1 つの同じ関連付けのエンドポイントになることはできません。PublicationではないインスタンスとTopicへの参照を持つことができますUser:

User user = new User() { Topics = new List<Topic>() };
Publication publication = new Publication();

publication.Author = user;

user.Topics.Add(???);

で ???インスタンスpublicationではないため、追加できません。つまり、それらのエンドポイントが同じ関連付けに属することはできません。Topicuser.Topicspublication

編集

データベース内の単一の外部キー列のみとの関連付けが 1 つだけ必要な場合は、Authorプロパティを からPublicationに移動するか、クラスTopicのコレクションが の代わりに参照できるようにする必要があります。UserPublicationTopic

public ICollection<Publication> Publications { get; set; }
于 2011-04-15T12:03:29.433 に答える