INSERT语句与外键约束冲突-SQL Server /实体框架核心

时间:2020-07-23 16:11:48

标签: asp.net .net sql-server core

.NET Core 3.1应用程序中出现此错误:

INSERT语句与FOREIGN KEY约束“ FK_DiaryDiaryEntry”冲突。在数据库“ xxxxxx”的表“ dbo.Diaries”的列“ Id”中发生了冲突。

我看不到表格本身有什么问题。

    public partial class Diaries
    {
        public long Id { get; set; }
        public string CoverImage { get; set; }
        public short Year { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public long ChildId { get; set; }

        public Children Child { get; set; }
        public ICollection<DiaryEntries> DiaryEntries { get; set; }
    }

    public partial class DiaryEntries
    {
        public long Id { get; set; }
        public DateTime Date { get; set; }
        public string Content { get; set; }
        public long DiaryId { get; set; }

        public Diaries Diary { get; set; }
        public ICollection<Images> Images { get; set; }
    }

我的代码?可能完全不同。

这是生成错误的代码。

[HttpPost("CreateYear/{id}")]
public async Task<IActionResult> CreateYearOfEntries([FromRoute] int id)
{
        // The id is the ID of an existing diary
        // Make sure the diary does exist first and that it belongs to the current logged-in user
        var diary = _diaryRepository.Find(id);

        if (diary == null) return NotFound();

        var year = diary.Result.Year;

        if (await _diaryEntryRepository.OwnerIsLoggedIn(LoggedInUser.ParentId, id))
        {
            var noOfDays = DateTime.IsLeapYear(year) ? 366 : 365;
            var i = 0;

            for (; i < noOfDays; i++)
            {
                var date = new DateTime(year, 1, 1).AddDays(i);
                var newDiaryEntry = new DiaryEntries()
                {
                    Content = " ",
                    Date = date,
                    DiaryId = diary.Id
                };

                await _diaryEntryRepository.Add(newDiaryEntry);
            }

            return Ok();
        }

        return NotFound();
}

public class DiaryEntryRepository : IDiaryEntryRepository
{
    private readonly ApplicationDbContext _context;

    public DiaryEntryRepository(ApplicationDbContext context)
    {
        _context = context;
    }

    public async Task<DiaryEntries> Add(DiaryEntries diaryEntry)
    {
        await _context.DiaryEntries.AddAsync(diaryEntry);
        await _context.SaveChangesAsync();

        return diaryEntry;
    }
}

0 个答案:

没有答案