我有两个简单的相关表格 - 问题和答案。
public class Question
{
public string Header { get; set; }
public string Ask { get; set; }
public int QuestionID { get; set; }
public virtual ICollection<Answer> Answers { get; set; }
}
public class Answer
{
public int AnswerID { get; set; }
public int QuestionID { get; set; }
public int DisplayOrder { get; set; }
public string Text { get; set; }
public string Value { get; set; }
public virtual Question Question { get; set; }
}
我有一个创建2个问题的初始化程序
var questions = new List<Question>
{
new Question {Header="Attending Meeting:", Ask="Did you attend the meeting:", QuestionID=0 },
new Question {Header="Overall:",Ask="Was the meeting:", QuestionID=1}
};
因此为问题0设置答案。
var answers = new List<Answer>
{
new Answer {Text="No",Value="-1",AnswerID=0,QuestionID=0,DisplayOrder=1 },
new Answer {Text="Yes",Value="0",AnswerID=1,QuestionID=0,DisplayOrder=2}
}
现在我总是想问题0(“你参加了”)有一个特定的ID,所以我可以测试它(如果你没有参加会议,那么没有其他问题)我已经任意设置为0。我尝试运行初始化程序然后答案给我一个QuestionID值为1,因为Question表的QuestionID字段具有如此设置的标识值:
[QuestionID] INT IDENTITY (1, 1) NOT NULL,
现在我知道我可以使用流畅的方式永久关闭自动增量但这会使其他事情变得更难......在初始化器中是否有任何方法我可以做相当于SET IDENTITY_INSERT OFF然后将其关闭之后呢?
我看到的所有示例都使用集合中相对数据的位置来确保值从1,2,3开始运行......并且外键依赖于此序列。