2017-04-25 4 views
0

My Entity Framework transmet une chaîne comme celle-ci à la base de données "1b2ef80d-038a-49d8-973b-fc783a53b6a3" au lieu du texte que j'ai placé dans le champ de saisie, qui était "texte". Comment puis-je seulement insérer la valeur exacte dans la table?Entity Framework insertion de valeur longue au lieu de valeur de chaîne réelle pour la base de données pour mon site principal ASP.NET

La table de base de données que je suis en train de tester est juste une colonne et est définie sur VARCHAR (400).

classe Contexte:

modelBuilder.Entity<Contract>(entity => 
      { 
       entity.HasKey(e => e.Contract1) 
        .HasName("Contract$PrimaryKey"); 

       entity.Property<string>(e => e.Contract1) 
        .HasColumnName("Contract") 
        .HasColumnType("VARCHAR(400)") 
        .IsUnicode(false) 
        .HasMaxLength(400); 
      }); 

classe Model:

 [Key] 
      [Column(TypeName = "VARCHAR(400)")] 
      [StringLength(400)] 
      public string Contract1 { get; set; } 

Voir la page:

<form asp-action="Create"> 
    <div class="form-horizontal"> 
     <h4>Contract</h4> 
     <hr /> 
     <div asp-validation-summary="ModelOnly" class="text-danger"></div> 
     <div class="form-group"> 
      @Html.LabelFor(model => model.Contract1, new { @class = "col-md-2 control-label" }) 
      <div class="col-md-10"> 
      @Html.EditorFor(model => model.Contract1) 
      @Html.ValidationMessageFor(model => model.Contract1) 
       <span class="text-danger"></span> 
      </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> 
</form> 

<div> 
    <a asp-action="Index">Back to List</a> 
</div> 

@section Scripts { 
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} 
} 
</body> 
</html> 

Et Contrôleur:

[HttpPost] 
     [ValidateAntiForgeryToken] 
     public async Task<IActionResult> Create([Bind("Contract")] Contract Contract) 
     { 
      if (ModelState.IsValid) 
      { 
       _context.Add(Contract); 
       await _context.SaveChangesAsync(); 
       return RedirectToAction("Create"); 
      } 
      ViewData["Contract"] = new SelectList(_context.Contract, "Contract", "Contract", Contract.Contract1); 
      return View(Contract); 
     } 
    } 
} 

Répondre

0

je devais ajouter la classe, au lieu de juste le context.Add je devais le rendre context.class.Add:

[HttpPost] 
     [ValidateAntiForgeryToken] 
     public async Task<ActionResult> Create(Contract Contract) 
     { 
      if (ModelState.IsValid) 
      { 
       _context.Contract.Add(Contract); 
       await _context.SaveChangesAsync(); 
       return RedirectToAction("Index"); 
      } 
      ViewData["Contract"] = new SelectList(_context.Contract, "Contract", "Contract", Contract.Contract1); 
      return View(Contract); 
     } 
    } 
}