2016-11-01 1 views
0

Ich folge Tutorial von dieser https://mva.microsoft.com/en-us/training-courses/implementing-entity-framework-with-mvc-8931?l=mBKHDFC3_9204984382. Dies ist mein CodeErstellen Sie 2 Primärschlüssel mit EF Fluent API

namespace FluentAPI 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     using (var context = new MusicContext()) 
     { 
      var album = new Album() { Price = 9.95m, Title = "YUhuu" }; 
      context.Albums.Add(album); 
      context.SaveChanges(); 
     } 
    } 

    public class Album 
    { 
     public int AlbumId { get; set; } 
     public string Title { get; set; } 
     public decimal Price { get; set; } 
    } 

    public class MusicContext : DbContext 
    { 
     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.HasDefaultSchema("MusicStore"); 

      modelBuilder.Entity<Album>().HasKey(t => t.AlbumId); 

      //tell EF to map string into varchar 
      modelBuilder.Entity<Album>().Property(t => t.Title).IsUnicode(false); 

      //Album id not going to be identity 
      modelBuilder.Entity<Album>() 
       .Property(t => t.AlbumId) 
       .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 

      base.OnModelCreating(modelBuilder); 
     } 

     public DbSet<Album> Albums { get; set; } 
    } 
} 
} 

Es nehme eine Tabelle in der Datenbank zu erstellen, mit AlbumId als Primärschlüssel. Aber wenn ich dieses Programm ausführe, ist das Tabellenergebnis nicht das, was ich erwartet habe. Es gibt 2 Primärschlüssel: AlbumId und Title. Ich möchte nur AlbumId als meinen Primärschlüssel. Mache ich etwas falsch?

+0

Können Sie die Tabellenstruktur (SQL) anzeigen? –

+1

Verbinden Sie sich mit einer vorhandenen Datenbank oder erstellen Sie die Datenbank aus Ihrem Code? Weil der Code gut aussieht. – syned

+0

@syned Ich erstelle die Datenbank aus dem Code – Intan

Antwort

0

[Key] Anmerkung fehlt auf AlbumId.

+0

Das ist nicht nötig, da die EF-Code-First ** Konvention ** ins Spiel kommt, was Id 'oder '(Entity) Id zum ** Schlüssel ** macht. ... und da ist diese Zeile im Code: 'modelBuilder.Entity () .HasKey (t => t.AlbumId);' das legt auch 'AlbumId' als Schlüssel fest. –

Verwandte Themen