Entity Framework Core - Как правильно определить первичный ключ, который также является внешним ключом? - PullRequest
1 голос
/ 23 сентября 2019

У меня есть следующие объекты:

class Topic {
    public int TopicId { get; set; }
}

public class Post {
   public int PostId { get; set; }
   public int TopicId { get; set; } 
}

Topic.TopicId и Post.PostId основаны на последовательности SQL, называемой «PostIdSequence».Если TopicId и PostId одинаковы, это означает, что этот конкретный пост является «темой сообщения».

Я хочу иметь возможность делать что-то подобное при создании новой «Темы» (это должно соответствоватьПубликация с тем же PostId и TopicId):

var topic = new Topic() {};
var post = new Post() {};
DbContext.Topics.Add(topic);
DbContext.Posts.Add(post);
DbContext.SaveChanges();

Таким образом, в основном, он должен автоматически заполнить "Topic.TopicId" следующим значением PostIdSequence, а затем также присвоить его Post.PostId.

Каков «правильный» способ создания этих классов сущностей?

1 Ответ

0 голосов
/ 23 сентября 2019

Пожалуйста, исправьте меня, если я ошибаюсь. В соответствии с моим пониманием, я думаю, что вы нарушаете базовый SQL ...

Вы не можете сделать PK как FK, а также не можете сделать больше, чем 1 PKв той же таблице.

Чтобы решить вашу проблему, вы должны заявить максимум 1 PK и 1 или более 1 FK.

public class Student
{
    public int StudentID { get; set; }
    public string StudentName { get; set; }

    //Foreign key for Standard
    public int StandardId { get; set; }
    public Standard Standard { get; set; }
}

public class Standard
{
    public int StandardId { get; set; }
    public string StandardName { get; set; }

    public ICollection<Student> Students { get; set; }
}

Пожалуйста, не стесняйтесь спрашивать, есть ли у вас какие-либо вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...