我知道这是一个我遇到的问题,我不知道如何解决它。我有两个表具有以下结构:SQL错误:插入语句与外键约束冲突
dbo.File
FileID int
Title nvarchar(50)
ISBN nvarchar(50)
UploadDate datetime
UserName nvarchar(50)
dbo.Cover
CoverID int
CoverFileContent varbinary(max)
CoverMimeType nvarchar(50)
CoverFileName nvarchar(50)
FileID int
文件表有一个与盖表一对多的关系,并且在写到FileID封面表引用写到FileID在文件表。
所以我也有一个MVC应用程序。在这种应用中,在一个屏幕上我插入的文件数据,然后在下面的屏幕我上传文件,并将其插入封面表这一点,但是我得到以下错误:
InnerException {"The INSERT statement conflicted with the FOREIGN KEY constraint \"FK_Cover_File\". The conflict occurred in database \"SampleAppDB\", table \"dbo.File\", column 'FileID'.\r\nThe statement has been terminated."} System.Exception {System.Data.SqlClient.SqlException}
我知道这意味着什么,我刚刚空白,我如何实际执行此插入语句以与File表相对应。目前,我没有在Cover表格中插入任何内容到FileID外键,因为我不知道如何去做。下面是从封面控制器的一个片段,其中盖文件的上传情况:
[HttpPost]
public ActionResult CreateCover(FormCollection formvalues)
{
Cover cover = new Cover();
cover.CoverMimeType = Request.Files["CoverUpload"].ContentType;
Stream fileStream = Request.Files["CoverUpload"].InputStream;
cover.CoverFileName = Path.GetFileName(Request.Files["CoverUpload"].FileName);
int fileLength = Request.Files["CoverUpload"].ContentLength;
cover.CoverFileContent = new byte[fileLength];
fileStream.Read(cover.CoverFileContent, 0, fileLength);
filerepository.AddCoverData(cover);
filerepository.Save();
return View(cover);
}
如何处理这个问题,将不胜感激,如果有人需要我发布更多信息过于任何意见,只问。
按照要求:filerepository.cs
private SampleAppDBEntities entities = new SampleAppDBEntities();
public void AddCoverData(Cover cover)
{
entities.Covers.AddObject(cover);
}
的你的filerepository对象定义中的与数据库相关的代码会有所帮助。这是linq到sql,nhibernate,直ado.net,其他? – Tahbaza 2010-11-06 11:33:35
@Tahbaza,我已经使用filerepository.cs中的代码片段更新了我的帖子。我正在使用ado.net。 – 109221793 2010-11-06 12:33:54