我有以下实体:
class Topic {
public int TopicId { get; set; }
}
public class Post {
public int PostId { get; set; }
public int TopicId { get; set; }
}
Topic.TopicId和Post.PostId基于称为“ PostIdSequence”的SQL序列。如果TopicId和PostId相同,则表示该特定帖子为“主题帖子”。
我希望能够在创建新的“主题”时做类似的事情(应该有一个具有相同PostId和TopicId的匹配帖子):
var topic = new Topic() {};
var post = new Post() {};
DbContext.Topics.Add(topic);
DbContext.Posts.Add(post);
DbContext.SaveChanges();
因此,基本上,它应该自动用PostIdSequence的下一个值填充“ Topic.TopicId”,然后将其分配给Post.PostId。
创建这些实体类的“正确”方法是什么?
答案 0 :(得分:0)
如果我错了,请纠正我。 根据我的理解,我认为您违反了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; }
}
请随时询问您是否有任何疑问。