2017-06-16 2 views
2

私は顧客のモデルがあります:ASP.Net MVC 5 IDから外部キーを追加するとエラーが発生しますか?

public class Customer 
{ 
    [Key, ForeignKey("ApplicationUser")] 
    public string UserId { get; set; } 
    public virtual ApplicationUser ApplicationUser { get; set; } 

    public string Title { get; set; } 
} 

をそして私、これは私のIdentityModel.csは、次のようになります。、そのコードを書いた後

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection", throwIfV1Schema: false) 
    { 
    } 

    public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 

    //new 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
    } 
} 

public class ApplicationUser : IdentityUser 
{ 
    public virtual Customer Customer { get; set; } 

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
    { 
     // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType 
     var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
     // Add custom user claims here 
     return userIdentity; 
    } 
} 

ApplicationDbContext私は走った有効に移行するアドイン移行と生じるエラーなし次いで更新データベース。間違っていただきまし

enter image description here

:私は新しいデータコンテキストクラスでモデルの顧客を使用して、Entity Frameworkのを使用して、ビューのMVC 5コントローラを作成しようとしました

、私はこのエラーを得ました?私はApplicationUser以外の何も変更していません:IdentityUserクラスとCustomerクラス。

私は、私は非常に詳細な指示をいただければ幸いこれに非常に新しいです:)

+0

コンテキストクラスコードを表示できますか?おそらく 'modelBuilder.Conventions.Remove ();のようなものを追加する必要があります。 –

+0

私はあなたがApplicationDbContextクラスを意味すると思いますか?私はそれに何もしていない。しかし、とにかくそれを加えました。 @TetsuyaYamamoto –

+0

ええ、少なくともあなたの 'ApplicationDbContext'と他の関連するコンテキストクラスを最初に見たいと思います。 IDテーブルのPK定義を見逃していたため、間違った設定がありました。 –

答えて

0

あなたがなどIdentityUserLogin、IdentityUserRoleを投稿していなかったAltough私はあなたがのために主キーを定義していませんでした想像することができますこれらのクラス。 Entity Frameworkには、それぞれとevery entity to have a keyが必要です。 この規約に従うと、主キーのプロパティIdまたはClassNameIdに名前を付けることができます。特に、Key注釈を使用することができます。

UPDATE

根本的な問題は、外部キーに関連しますが、主キーの欠如にされていません。

まず、KeyとForeignKeyの両方としてプロパティを定義しないでください。 UserIdからKey属性を削除し、ForeignKeyだけを残します。 次はそうのようなIdプロパティを定義します。

public int Id { get; set; } 

Entity Frameworkのは、主キーとしてそれを識別するのに十分なインテリジェントです。 これをあなたのすべてのエンティティで行い、データベースを更新すればいいですね。

+0

どうすればそれをやり遂げることができますか? MVCとASP.netにまだ慣れていない –

関連する問題