2016-11-01 3 views
0

Я следую уроку из этого https://mva.microsoft.com/en-us/training-courses/implementing-entity-framework-with-mvc-8931?l=mBKHDFC3_9204984382. Это мой кодСоздайте 2 основных ключа, используя API-интерфейс EF Fluent

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; } 
    } 
} 
} 

Это, предполагают, чтобы создать таблицу в базе данных, с AlbumId в качестве первичного ключа. Но когда я запускаю эту программу, результат таблицы не тот, который я ожидал. Есть 2 основных ключа: AlbumId и Title. Мне просто нужен AlbumId в качестве основного ключа. Я делаю что-то неправильно?

+0

Вы можете показать структуру таблицы (SQL)? –

+1

Вы подключаетесь к существующей базе данных или создаете базу данных из своего кода? Потому что код выглядит хорошо. – syned

+0

@syned Я создаю базу данных из кода – Intan

ответ

0

[Key] аннотация отсутствует в верхней части AlbumId.

+0

Это не нужно, так как вступает в действие код EF-кода ** ** **, который по умолчанию делает идентификатор 'Id' или' (entity) Id' **. ... плюс есть эта строка в коде: 'modelBuilder.Entity () .HasKey (t => t.AlbumId);' который также устанавливает 'AlbumId' в качестве ключа. –

Смежные вопросы