2015-02-26 5 views
1

У меня есть создать приложение для загрузки изображения в базе данных это моя модель«HttpPostedFileBase» не имеет определенного ключа. Определите ключ для этого EntityType

[Table("ImageGallery")] 
public class ImageGallery 
{ 
    [Key] 
    public int ImageID { get; set; } 
    public int ImageSize { get; set; } 
    public string FileName { get; set; } 
    public byte[] ImageData { get; set; } 
    [Required(ErrorMessage="Please select Image File")] 
    public HttpPostedFileBase file { get; set; } 
} 

это моя модель базы данных

public class TPADB : DbContext 
{ 
    public DbSet<ImageGallery> imagegallery { get; set; } 
} 

это мой взгляд

@using (Html.BeginForm("Upload", "ImageUP", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
@Html.ValidationSummary(true) 
<table> 
    <tr> 
     <td>Select File : </td> 
     <td> 
      @Html.TextBoxFor(Model => Model.file, new { type="file"}) 
      @Html.ValidationMessage("CustomError") 
     </td> 
     <td> 
      <input type="submit" value="Upload" /> 
     </td> 
    </tr> 
</table> 

это мой контроллер

[HttpGet] 
    public ActionResult Upload() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Upload(ImageGallery IG) 
    { 
     IG.FileName = IG.file.FileName; 
     //IG.ImageSize = IG.file.ContentLength; 
     byte[] data = new byte[IG.file.ContentLength]; 
     IG.file.InputStream.Read(data, 0, IG.file.ContentLength); 
     IG.ImageData = data; 
     using (TPADB db = new TPADB()) 
     { 
      db.imagegallery.Add(IG); 
      db.SaveChanges(); 
     } 
     return View(); 
    } 

но прошлифованная ошибку, которая «один или более проверки были обнаружены ошибки в процессе генерации модели:

TPA.Models.HttpPostedFileBase:: EntityType„HttpPostedFileBase“не определена ни одна клавиши , Определите ключ для этого EntityType. HttpPostedFileBases: EntityType:. EntitySet «HttpPostedFileBases» основан на типе «HttpPostedFileBase», который не имеет ключи, определенные»

ответ

1

Фигурные его, сделайте следующие изменения в модели:

public partial class ImageGallery 
    { 
     [Key] 
     public int ImageID { get; set; } 
     public int ImageSize { get; set; } 
     public string FileName { get; set; } 
     public byte[] ImageData { get; set; } 
     public string File 
     { 
      get 
      { 
       string mimeType = "image/png"; 
       string base64 = Convert.ToBase64String(ImageData); 
       return string.Format("data:{0},{1}", mimeType, base64); 
      } 
     } 

    } 

Затем добавить эту строку к контроллеру:

  HttpPostedFileBase File = Request.Files[0]; 

Заменить любую запись IG.File с файлом, например:

  if (File.ContentLength > (2 * 1024 * 1024)) 
Смежные вопросы