2016-11-01 9 views
0

私はこのhttps://mva.microsoft.com/en-us/training-courses/implementing-entity-framework-with-mvc-8931?l=mBKHDFC3_9204984382からチュートリアルに従います。これは、主キーとして​​と、データベース内のテーブルを作成すると仮定私のコードEF Fluent APIを使用して2つの主キーを作成

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

です。しかし、私はこのプログラムを実行すると、テーブルの結果は私が期待したものではありません。主キーは、​​とTitleの2つです。私はちょうど​​を私の主キーにしたい。何か間違っているのですか?

+0

テーブル構造(SQL)を表示できますか? –

+1

既存のデータベースに接続しているか、コードからデータベースを作成していますか?コードはよく見えるので。 – syned

+0

@syned私はコード – Intan

答えて

0

[Key]注釈は​​の上にありません。

+0

からデータベースを作成します。EFコードの最初の**慣習**が有効になり、デフォルトでは 'Id'または'(entity)Id'が**キー**になりますので、これは不要です。 ...さらにこのコードは 'modelBuilder.Entity ().HasKey(t => t.AlbumId);'であり、 'AlbumId'をキーに設定しています。 –

関連する問題