2016-05-05 6 views
2

Ich habe eine mvc5-Anwendung, in der ich versuche, neue Zeilen in meinem Modell zu erstellen. Aber der Primärschlüssel für die Tabelle ist immer in einer Reihenfolge.MVC5 Primärschlüssel nimmt immer die Sequenz

Aber ich möchte den Schlüssel, den ich gebe, als Primärschlüssel verwendet werden. Ich bin neu bei MVC und ich bin mir nicht sicher, was ich hier falsch mache.

Dies ist mein Controller

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "ProviderId,ProviderName")] Provider provider) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Providers.Add(provider); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(provider); 
    } 

ich sehen kann, dass, während in Anbieter diesen Wert Debuggen ist, was ich eine Eingabe von der Ansicht.

Hier ist mein Teil meiner Ansicht:

<div class="form-group"> 

    @Html.LabelFor(model => model.ProviderId, htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.EditorFor(model => model.ProviderId, new { htmlAttributes = new { @class = "form-control" } }) 
     @Html.ValidationMessageFor(model => model.ProviderId, "", new { @class = "text-danger" }) 
    </div> 

     @Html.LabelFor(model => model.ProviderName, htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.EditorFor(model => model.ProviderName, new { htmlAttributes = new { @class = "form-control" } }) 
     @Html.ValidationMessageFor(model => model.ProviderName, "", new { @class = "text-danger" }) 
    </div> 

</div> 

hier ist meine Modellklasse:

public class Provider 
{ 
    [Key] 
    public int ProviderId { get; set; } 
    public string ProviderName { get; set; } 
} 

public class ProviderDBContext : DbContext 
{ 
    public DbSet<Provider> Providers { get; set; } 
} 

ich will, was ich in meiner Ansicht nach ein, wie ProviderId in meiner Tabelle gespeichert werden.

Bitte helfen.

Antwort

1

Sie müssen EF wissen lassen, dass die ProviderID manuell definiert werden soll. Eine Möglichkeit ist, warum EntityTypeConfiguration erweitert wird.

public class ProviderConfig: EntityTypeConfiguration<Provider> 
    { 
     public ProviderConfig() 
     { 
    this.Property(p => p.ProviderID) 
       .HasColumnName("provider_id") 
       .HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None); 
} 
} 

Anschließend müssen Sie OnModelCreating überschreiben und Ihre Konfigurationsklasse registrieren.

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Configurations.Add(new ProviderConfig()); 

} 
+0

Arbeitete wie ein Charme! Vielen Dank – sunny

Verwandte Themen