ddgjgj Ответов: 0

Asp.net mvc5 один ко многим отношения не работают (бритва + вложения)


These are the classes im working with :


public partial class AttachmentFile
    {
        public string Id { get; set; }
        public string FileName_ { get; set; }
        public string Ext_ { get; set; }
        public int FileSize_ { get; set; }
        public Nullable<System.DateTime> FileDate_ { get; set; }
        public string ModuleID_ { get; set; }
        public string RecordID_ { get; set; }
        public string FileType_ { get; set; }
        public string HashCode_ { get; set; }
 
        public virtual EMRecord EMRecord { get; set; }




public partial class EMRecord
    {
   
        public string Id { get; set; }
        public string EMRPatientName_ { get; set; }
        public Nullable<System.DateTime> PatientDOB_ { get; set; }
        public System.DateTime EMRDate_ { get; set; }
        public string EMRTitle_ { get; set; }
        public string EMRSymptoms_ { get; set; }
        public string EMRDiagnosis_ { get; set; }
        public string EMRTreatment_ { get; set; }
        public string EMRDoctorName_ { get; set; }
        public string InstitutionName_ { get; set; }
        public string Restrictions_ { get; set; }
        public string Clerances_ { get; set; }
        public string PatientId_ { get; set; }
        public string ProfessionalID_ { get; set; }
        public string InstitutionID_ { get; set; }
        public string HCEID_ { get; set; }
        public string EMRecordType_ { get; set; }
 
        public virtual Patient Patient { get; set; }
 
        public virtual ICollection<EMRShare> EMRShares { get; set; }
 
        public virtual ICollection<AttachmentFile> AttachmentFiles { get; set; }



So they are in a one-to-many relationship. So whenever i create an EMRecord , it could have some attachments with it , and they should save into Attachment table into database.
The create method doesnt throw any error , just save a file in the  "~/App_Data/Upload/" folder and not in the Attachment table in database . 

This is the create method and view :


@model HFC.Models.EMRecord
 
@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
 
<h2>Create</h2>
 
    @using (Html.BeginForm("Create", "EMRecords", null, FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
    @Html.AntiForgeryToken()
 
    <div class="form-horizontal">
        <h4>EMRecord</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Id, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Id, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Id, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.EMRPatientName_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.EMRPatientName_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.EMRPatientName_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.PatientDOB_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.PatientDOB_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.PatientDOB_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.EMRDate_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.EMRDate_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.EMRDate_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.EMRTitle_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.EMRTitle_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.EMRTitle_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.EMRSymptoms_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.EMRSymptoms_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.EMRSymptoms_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.EMRDiagnosis_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.EMRDiagnosis_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.EMRDiagnosis_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.EMRTreatment_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.EMRTreatment_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.EMRTreatment_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.EMRDoctorName_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.EMRDoctorName_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.EMRDoctorName_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.InstitutionName_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.InstitutionName_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.InstitutionName_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.Restrictions_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Restrictions_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Restrictions_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.Clerances_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Clerances_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Clerances_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.PatientId_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.PatientId_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.PatientId_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.ProfessionalID_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.ProfessionalID_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.ProfessionalID_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.InstitutionID_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.InstitutionID_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.InstitutionID_, "", new { @class = "text-danger" })
            </div>
        </div>
 
        <div class="form-group">
            @Html.LabelFor(model => model.HCEID_, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.HCEID_, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.HCEID_, "", new { @class = "text-danger" })
            </div>
        </div>
 
      
 
        <div class="form-group">
            @Html.LabelFor(model => model.EMRecordType_, "EMRecordType_", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("EMRecordType_", null, "Select", new { @class = "form-control" })
 
                @Html.ValidationMessageFor(model => model.EMRecordType_, "", new { @class = "text-danger" })
            </div>
        </div>
 
 
        <div class="form-group">
            @Html.LabelFor(model => model.AttachmentFiles, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
 
                <input type="file" name="file" value="Browse" multiple="multiple" />
 
            </div>
        </div>
 
 
 
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
 
<div>
    @Html.ActionLink("Back to List", "Index")
</div>




public ActionResult Create()
       {
           ViewBag.EMRecordType_ = new SelectList(db.EMRecords, "EMRecordType_", "EMRecordType_");
 
 
           return View();
       }
 
       // POST: EMRecords/Create
       // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
       // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
       [HttpPost]
       [ValidateAntiForgeryToken]
       public ActionResult Create([Bind(Include = "Id,EMRPatientName_,PatientDOB_,EMRDate_,EMRTitle_,EMRSymptoms_,EMRDiagnosis_,EMRTreatment_,EMRDoctorName_,InstitutionName_,Restrictions_,Clerances_,PatientId_,ProfessionalID_,InstitutionID_,HCEID_,EMRecordType_")] EMRecord eMRecord)
       {
           //  if (ModelState.IsValid)
           //  {
           //       db.EMRecords.Add(eMRecord);
           //      db.SaveChanges();
           //      return RedirectToAction("Index");
           //       }
           //    ViewBag.EMRecordType_ = new SelectList(db.EMRecords, "EMRecordType_", "EMRecordType_");
 
           //  return View(eMRecord);
 
 
           if (ModelState.IsValid)
           {
               List<AttachmentFile> fileDetails = new List<AttachmentFile>();
               for (int i = 0; i < Request.Files.Count; i++)
               {
                   var file = Request.Files[i];
 
                   if (file != null && file.ContentLength > 0)
                   {
                       var fileName = Path.GetFileName(file.FileName);
                       AttachmentFile fileDetail = new AttachmentFile()
                       {
 
 
                           Id = System.IO.Path.GetFileName(file.FileName),
                           FileName_ = System.IO.Path.GetFileName(file.FileName),
                           Ext_ = Path.GetExtension(file.ToString()),
                           FileSize_ = file.ContentLength,
                           FileDate_ = DateTime.Now,
                           ModuleID_ = "EMRecord",
                 //          RecordID_ = eMRecord.Id,
 
                           FileType_ = file.ContentType,
                           HashCode_ = file.GetHashCode().ToString()
 
 
                         
 
 
 
                           
                       };
                       fileDetails.Add(fileDetail);
 
                       var path = Path.Combine(Server.MapPath("~/App_Data/Upload/"), fileDetail.Id + fileDetail.Ext_);
                       file.SaveAs(path);
                   }
               }
 
               eMRecord.AttachmentFiles = fileDetails;
               db.EMRecords.Add(eMRecord);
               db.SaveChanges();
               return RedirectToAction("Index");
           }
           ViewBag.EMRecordType_ = new SelectList(db.EMRecords, "EMRecordType_", "EMRecordType_");
           return View(eMRecord);
       }






I appriciate every help. Thanks in regards , a lot !


Что я уже пробовал:

я описываю проблему выше , все подробно.

F-ES Sitecore

У нас нет доступа к вашей конфигурации EF, поэтому мы не можем воспроизвести вашу проблему. Используйте отладчик, чтобы шагнуть вперед, чтобы увидеть, что происходит, и google, как управлять отношениями parent\child EF для указателей.

ddgjgj

спасибо

0 Ответов