2

私は全くASP.NETに慣れていませんが、これはASP.NET Coreの私の最初のアプリです。移行を作成した後にデータベースを更新する際に問題があります。私は、コマンド入力時:dotnet ef database updateを、私はエラーを取得:"各テーブルの列名は一意でなければなりません。データベースの更新中

Column names in each table must be unique. Column name 'PortalUserId' in table 'Adverts' is specified more than once.

私はこの問題は私のモデル構造であると思いますが、私は私が間違っているのかわかりません。私がASP.NET MVC 5で開発していたとき、すべてがOKでした。ここで

は(ケースエンティティの不必要なし)私のモデルである:私はここでやっている

public class ApplicationDbContext : IdentityDbContext 
{ 
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) 
     : base(options) 
    { 
    } 
    public DbSet<PortalUser> PortalUsers { get; set; } 
    public DbSet<Advert> Adverts { get; set; } 
    public DbSet<Category> Categories { get; set; } 

    protected override void OnModelCreating(ModelBuilder builder) 
    { 
     base.OnModelCreating(builder); 
     // Customize the ASP.NET Identity model and override the defaults if needed. 
     // For example, you can rename the ASP.NET Identity table names and more. 
     // Add your customizations after calling base.OnModelCreating(builder); 
    } 
} 

public class Advert 
{ 
    public int ID { get; set; } 
    public string Title { get; set; } 
    public int CategoryID { get; set; } 
    public virtual Category Category { get; set; } 
    public int PortalUserID { get; set; } 
    public PortalUser PortalUser { get; set; } 
} 

public class PortalUser : IdentityUser 
{ 
    public string FirstName { get; set; } 
    public string Surname { get; set; } 
    public ICollection<Advert> Adverts { get; set; } 

} 

何遅延読み込みのために、通常の仮想マッピングです。私は、PortalUser in AdvertフィールドにFKを保存しています。

すべての役に立つ回答をいただきありがとうございます。

私はすでに今、私のモデルは公式のチュートリアルのように見える遅延ロードがそのようにサポートされていないことを、把握:

https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/new-db

public class BloggingContext : DbContext 
{ 
    public BloggingContext(DbContextOptions<BloggingContext> options) 
     : base(options) 
    { } 

    public DbSet<Blog> Blogs { get; set; } 
    public DbSet<Post> Posts { get; set; } 
} 

public class Blog 
{ 
    public int BlogId { get; set; } 
    public string Url { get; set; } 

    public List<Post> Posts { get; set; } 
} 

public class Post 
{ 
    public int PostId { get; set; } 
    public string Title { get; set; } 
    public string Content { get; set; } 

    public int BlogId { get; set; } 
    public Blog Blog { get; set; } 
} 
+0

質問/文の自然な部分でない限り、将来的にタイトルにタグを付けることを避けてください。ヘルプセンターをご覧ください:http://stackoverflow.com/help/tagging – Tseng

+0

大文字と小文字の区別が矛盾しているようです。 'PortalUserID'ではなく' PortalUserId'という名前をつけてみましたか?(小文字のDが最後にありますか?EFコアはデフォルトでは 'Id'を外部キーに追加しようとします。あなたのエラーメッセージに 'PortalUserId'と表示されますが、あなたのモデルには' PortalUserID'があります – Tseng

+0

PortalUserIdに変更しました - データベースへの更新は完了しましたが、データベース構造ではPortalUserIdとPortalUserId1を持っています。 MVCでこのようなことは起こりません – Pawel

答えて

1

さて、男は、私は解決策を見つけました!必要なものはすべて、intからstringへのプロパティPortalUserIdのタイプの変更です。すべてがコンパイルされ、倍増フィールドは現れません!

少なくとも私を助けてくれてありがとう!

関連する問題