Ошибка при загрузке файла: System.InvalidOperationException: «Тип объекта Document не является частью модели для текущего контекста». - PullRequest
0 голосов
/ 22 июня 2019

Я получаю сообщение об ошибке ниже при попытке загрузить файл в папку:

System.InvalidOperationException: 'Тип объекта Document не является частью модели для текущего контекста.'

Вот код:

public ActionResult AddHRDocument()
{
    DocumentsConn db = new DocumentsConn();
    return View();
}

[HttpPost]
public ActionResult AddHRDocument(HttpPostedFileBase file)
{
    //Extract Image File Name.
    string fileName = System.IO.Path.GetFileName(file.FileName);

    //Set the Image File Path.
    string filePath = "~/Documents/HR/" + fileName;

    //Save the Image File in Folder.
    file.SaveAs(Server.MapPath(filePath));

    //Insert the Image File details in Table.
    DocumentsConn db = new DocumentsConn();
    db.Documents.Add(new Document
    {
        DocumentName = fileName,
        Document_url = filePath

    });
    db.SaveChanges();
}

Ответы [ 2 ]

0 голосов
/ 22 июня 2019

Эта ошибка очень общая, она может иметь ряд причин.

1-Проблема может быть в строке подключения. Убедитесь, что вы подключены строка для SqlClient провайдера, без метаданных, связанных с EntityFramework.

2-Убедитесь, что вы явно не игнорируете тип:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Ignore<Document>();
}

3-Существует проблема с присвоением имен для сопоставления сущности с именем таблицы:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Doucment>().ToTable("Doucment");
}
0 голосов
/ 22 июня 2019

Я использовал этот код для загрузки нескольких файлов. Вы можете редактировать свой код для одного файла.

View => Write enctype = "multipart / form-data"

   @using (Html.BeginForm("ActionName", "ControolerName", FormMethod.Post, new { enctype = "multipart/form-data" }))

--UploadFile Box

  @Html.TextBoxFor(Model => Model.Files, new { type = "file", name = "Files", multiple = "multiple", @class = "form-control", accept = "image/*" })

Использование кода ниже в вашем действии для получения файлов из запроса:

  [HttpPost]
  public ActionResult UploadFile(long Id)

Параметр ввода действия Не требуется HttpPostedFileBase.

                  for (int i = 0; i < Request.Files.Count; i++)
                    {
                        var file = Request.Files[i];                             

                        string fileName = Guid.NewGuid() + System.IO.Path.GetExtension(file.FileName)?.ToLower();

                        string path = Server.MapPath("~") + "Files\\UploadImages\\" + fileName;

                        //TODO: Fill Properties Table.example: DocType Or Id Or AddressFile
                       // entity.DocType = System.IO.Path.GetExtension(file.FileName)?.ToLower();

                        if (File.DocType?.ToLower() == ".png" || File.DocType?.ToLower() == ".img"
                                                                || File.DocType?.ToLower() == ".jpeg"
                                                                || File.DocType?.ToLower() == ".jpg")
                        {                              
                            file.SaveAs(path);
                            //TODO: Save Info File In Database
                        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...