我正在使用2种不同的Dbcontexts.我想使用2个不同的数据库用户和mycontext.虽然这样做我收到错误实体类型'Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserLogin'需要定义主键.我认为IdentityUser有问题请建议我在哪里可以更改我的代码,以便我可以添加迁移.
我的Dbcontext类:
class MyContext : DbContext
{
public DbSet<Post> Posts { get; set; }
public DbSet<Tag> Tags { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<PostTag>()
.HasKey(t => new { t.PostId, t.TagId });
modelBuilder.Entity<PostTag>()
.HasOne(pt => pt.Post)
.WithMany(p => p.PostTags)
.HasForeignKey(pt => pt.PostId);
modelBuilder.Entity<PostTag>()
.HasOne(pt => pt.Tag)
.WithMany(t => t.PostTags)
.HasForeignKey(pt => pt.TagId);
}
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public AppUser User {get; set;}
public string Content { get; set; }
public List<PostTag> PostTags { get; set; }
}
public class Tag
{
public string TagId { get; set; }
public List<PostTag> PostTags { get; set; }
}
public class PostTag
{
public int PostId { get; set; }
public Post Post { get; set; }
public string TagId { get; set; }
public Tag Tag { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和AppUser类:
public class AppUser : IdentityUser
{
//some other propeties
}
Run Code Online (Sandbox Code Playgroud)
当我尝试添加迁移时,会发生以下错误.
The entity type 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserLogin<string>' requires a primary key to be defined.
Run Code Online (Sandbox Code Playgroud)
给我解决问题的方法..
Gre*_*Gum 160
要简化链接,请尝试以下方法:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
...
Run Code Online (Sandbox Code Playgroud)
请参阅上面的链接了解更多
imm*_*rza 24
只要在DBContext中编写以下行而不添加,就会开始出现此问题 'base.OnModelCreating(modelBuilder);'
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
Run Code Online (Sandbox Code Playgroud)
两种解决方案
1)不要OnModelCreating在DbContext中覆盖Until it becomes necessary
2)覆盖但呼叫 base.OnModelCreating(modelBuilder)
问题是AppUser继承自IdentityUser,它们的主键未映射到dbcontext的OnModelCreating方法中.
已经有一个解决方案的帖子.请访问以下链接
EntityType'IdentityUserLogin'没有定义键.定义此EntityType的键
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
42441 次 |
| 最近记录: |