0
我正在使用ASP.NET MVC和實體框架代碼優先的方法。我想上傳一個文件(.doc
或.pdf
)到SQL Server。我已經搜索並瀏覽了很多論壇,但找不到使用實體框架代碼優先方法將文件上傳到SQL Server的明確解決方案。無法使用ASP.net中的實體框架將文件上傳到SQL Server MVC
我寫了下面的代碼來上傳文件,但在將文件保存到數據庫時出現錯誤。
這裏是下面的代碼
控制器是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
using FileuploadEF.Models;
namespace FileuploadEF.Controllers
{
public class HomeController : Controller
{
FileEntities db = new FileEntities();
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult upload()
{
foreach (string file in Request.Files)
{
var PostedFile = Request.Files[file];
string filetype = Request.Files[file].ContentType;
int filelength = Request.Files[file].ContentLength;
Stream filestream = Request.Files[file].InputStream;
byte[] filedata = new byte[filelength];
string filename= Path.GetFileName(Request.Files[file].FileName);
filestream.Read(filedata, 0, filelength);
var data = new FileDump
{
FileName = filename,
FileType = filetype,
FileContent = filedata
};
db.FileDumps.Add(data);
db.SaveChanges();
}
return View();
}
}
}
類filedump
用於創建數據庫是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace FinaleuploadEF.Models
{
public class FileDump
{
public int Id { get; set; }
public string FileName { get; set; }
public string FileType { get; set; }
public byte[] FileContent { get; set; }
}
}
的實體類是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace FinaleuploadEF.Models
{
public class FinalEntities : DbContext
{
public DbSet<FileDump> FileDumps { get; set; }
}
}
連接字符串:
<connectionStrings>
<add name="FinalEntities"
connectionString="Data Source=|DataDirectory|FinaleuploadEF.sdf"
providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
我收到以下錯誤,而文件保存到數據庫:
www.freeimagehosting.net/kmwts
任何人都可以請建議對上述問題的解決方案?或者上述代碼中需要的任何更改?
閱讀[使用ASP.NET MVC從SQL Server下載和上傳圖像](http://rusanu.com/2010/12/28/download-and-upload-images-from-sql-server-with -asp-net-mvc /) - 使用EF就沒有任何意義 - 只需使用「直接」ADO.NET代碼完成此任務,如該博客文章所示 –
在您的代碼中添加try catch,並查看並檢查'EntityValidationErros'屬性,因此您可以更清楚地瞭解實際錯誤。 –