Я получаю сообщение об ошибке выше, когда я звоню SaveChanges()
, используя экземпляр моего Context
. Теперь я понимаю, на что указывает ошибка, но я просто не понимаю, почему она возникает в данной конкретной ситуации.
Ошибка возникает из-за того, что я сохраняю экземпляр TestMember
в поле TestMember
в классе Report (который является моделью для моей таблицы). Поскольку TestMember
является внешним ключом, это не должно быть проблемой, не так ли? Для собственной ясности я написал сырой SQL и явно поместил valid int в поле ForeignKey, и оно работало нормально. INSERT INTO [TestMemberReports].[dbo].[TestReports] (TestMemberId,Date,IsSuccess) values (3, '2019-05-09', 0)
.
Однако, когда сделано в коде, как показано ниже. Выдает ошибку SqlException: Cannot insert explicit value for identity column in table 'TestMembers' when IDENTITY_INSERT is set to OFF.
. Для цели вопроса, пожалуйста, примите:
CreateReports()
вызывается с
main()
Код
public class TestReportService
{
private TestMemberReportContext Context { get; }
public void SaveChanges() => Context.SaveChanges();
public TestReportService(TestMemberReportContext context)
{
Context = context;
}
public void CreateReports()
{
var reports = AddReport();
Context.TestReports.Add(reports);
SaveChanges();
}
private TestReport AddReport()
{
return new TestReport { IsSuccess = 0, TestMember = GetTestMember("Member 1"), Date = DateTime.Now() });
}
public TestMember GetTestMember(string name)
{
return Context.TestMembers.Single(c => c.Name == name);
}
}
Модель
public class TestReport
{
public int Id { get; set; }
public TestMember TestMember { get; set; }
public DateTime Date { get; set; }
public bool IsSuccess{ get; set; }
}
public class TestMember
{
public int Id { get; set; }
public string Name { get; set; }
public string FileName { get; set; }
public ICollection<TestRecipient> Recipients { get; set; }
}