Сохранение 2 связанных объектов, где первичный ключ генерируется последовательностью

#entity-framework #asp.net-core #entity-framework-core

#entity-framework #asp.net-core #entity-framework-core

Вопрос:

У меня есть следующая структура базы данных:

 CREATE SEQEUENCE post_id_seq INT START WITH 1;

CREATE TABLE topics 
(
     topic_id INT DEFAULT NEXT VALUE FOR post_id_seq PRIMARY KEY
);

CREATE TABLE posts 
(
     post_id INT DEFAULT NEXT VALUE FOR post_id_seq PRIMARY KEY, 
     topic_id INT
);
  

Каждая тема имеет «сообщение темы» (идентифицируется при topic_id = post_id ).

Как мне сделать так, чтобы при создании темы я мог одновременно создавать сообщение, и topic_id и post_id при запуске были правильно назначены SaveChanges ?

Что-то вроде приведенного ниже:

 var topic = db.Topics.Add();
var post = db.Posts.Add() { PostId = topic.TopicId, TopicId = topic.TopicId };
db.SaveChanges();
  

Ответ №1:

Есть ли в теме коллекция сообщений? Если это произойдет, должно сработать следующее:

 var topic = new Topic()

var postForTopic = new Post();
topic.Posts.Add(postForTopic);

db.Topics.Add(topic);
db.SaveChanges();