我有一个Web应用程序,它给了我以下例外:
InnerException {“无法插入 。中标识列的显式值 IDENTITY_INSERT时表'封面' 设置为OFF。“} System.Exception {System.Data.SqlClient.SqlException}
我正在尝试插入一个如下所示的数据库:
dbo.File
FileID int PK
Title nvarchar(50)
ISBN nvarchar(50)
UploadDate datetime
UserName nvarchar(50)
dbo.Cover
CoverID int PK
CoverFileContent varbinary(max)
CoverMimeType nvarchar(50)
CoverFileName nvarchar(50)
FileID int FK
dbo.Cover
CoverID int PK
CoverFileContent varbinary(max)
CoverMimeType nvarchar(50)
CoverFileName nvarchar(50)
FileID int FK
在此数据库中,File表与Cover和Pdf表具有一对多的关系。在我的应用程序中,用户首先输入文件的描述,然后更新文件表,然后他们上传与更新Cover表的文件相关联的图片,然后他们上传PDF文件(我没有这么远然而)。
现在,我的MVC c#代码如下所示:
FileController
//
//GET: /File/CreateFile
public ActionResult CreateFile()
{
File file = new File();
return View(file);
}
//
//POST: /File/CreateFile
[HttpPost]
public ActionResult CreateFile(FormCollection formvalues)
{
File file = new File();
if (TryUpdateModel(file))
{
filerepository.AddFileData(file);
filerepository.Save();
return RedirectToAction("CreateCover", "Cover", new { id = file.FileID });
}
return View(file);
}
封面控制器
//
//GET: /File/CreateCover
public ActionResult CreateCover(int id)
{
Cover cover = new Cover();
cover.FileID = id;
return View(cover);
}
//
//POST: /File/CreateCover
[HttpPost]
public ActionResult CreateCover(Cover 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);
cover.FileID = int.Parse(Request.Form["FileID"]);
filerepository.AddCoverData(cover);
filerepository.Save();
return View(cover);
//return View("CreatePdf", "Pdf", new { id = cover.FileID });
}
CreateCover View
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SampleApp.Models.Cover>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
CreateCover
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent"
runat="server">
<h2>CreateCover</h2>
<% using (Html.BeginForm("CreateCover", "Cover", FormMethod.Post, new { enctype = "multipart/form-data" }))
{ %>
<%: Html.HiddenFor(model => model.FileID) %>
<asp:Label ID="Label2" runat="server" Text="Please Select your eBook Cover" /><br />
<input type="file" name="CoverUpload" /><br />
<input type="submit" name="submit" id="Submit" value="Upload" />
<% } %>
<div>
<%: Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
我能够上传一次封面,但从那时起我就一直收到这个错误。我注意到在我的表中我忘记将PK列设置为IDENTITY(1,1),但是我改变了这个并且仍然得到错误。
我也不知道是否值得一提,但在我的数据库中我能够上传的一个图像,数据库中的二进制内容几乎是“0x00000 ......”......这似乎不对? :)
感谢任何帮助或建议,谢谢!
答案 0 :(得分:5)
为遇到同样问题的其他人解决了这个问题。只需在Visual Studio中刷新模型,它似乎已经完成了这个技巧。