私は全く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; }
}
質問/文の自然な部分でない限り、将来的にタイトルにタグを付けることを避けてください。ヘルプセンターをご覧ください:http://stackoverflow.com/help/tagging – Tseng
大文字と小文字の区別が矛盾しているようです。 'PortalUserID'ではなく' PortalUserId'という名前をつけてみましたか?(小文字のDが最後にありますか?EFコアはデフォルトでは 'Id'を外部キーに追加しようとします。あなたのエラーメッセージに 'PortalUserId'と表示されますが、あなたのモデルには' PortalUserID'があります – Tseng
PortalUserIdに変更しました - データベースへの更新は完了しましたが、データベース構造ではPortalUserIdとPortalUserId1を持っています。 MVCでこのようなことは起こりません – Pawel