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

任何人都可以請建議對上述問題的解決方案?或者上述代碼中需要的任何更改?

+1

閱讀[使用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代碼完成此任務,如該博客文章所示 –

+1

在您的代碼中添加try catch,並查看並檢查'EntityValidationErros'屬性,因此您可以更清楚地瞭解實際錯誤。 –

回答

0

您應該嘗試隔離問題。

請先嚐試運行代碼而不保存文件的內容。

如果該工作提取保存數據的代碼,並編寫一個保存在代碼中構建的字節數組的單元測試。

如果那個作品寫了一個單元測試,保存一個字節數組,通過從磁盤讀取文件來構建。

如果這樣做可以嘗試使用您的代碼將上傳的文件保存到磁盤。

通過以上操作,您應該能夠確定問題的根本原因。

相關問題