假设我在EF生成的数据库中有一个Todo带有相应Todotable(DbSet<Todo>)的模型.该表将每行存储待办事项.每个用户(在ASP.NET Core Identity + IdentityServer应用程序中)将与多个待办事项相关联(一对多,用户可以有多个待办事项).
我这样做的方法是向模型添加一个UserId外键Todo,代表拥有待办事项的用户.
在使用ASP.NET核心标识证明的类时,如何使用EF Core?我的直觉是将以下内容添加到Todo类模型中:
public string UserId { get; set; }
[ForeignKey("UserId")]
public ApplicationUser User { get; set; }
Run Code Online (Sandbox Code Playgroud)
这使用ApplicationUser(ASP.NET Core Identity默认用户类模型)作为发现来填充UserId外键.
这是问题所在:当我跑步时Update-Database我得到一个错误!它说The entity type 'IdentityUserLogin<string>' requires a primary key to be defined..
浏览代码IdentityUserLogin,我可以看到它有一个UserId应该被视为主键的属性,对吧?
总之,以确保其作为主键注册,我加入这个代码ApplicationUser的OnModelCreating方法:builder.Entity<ApplicationUser>().HasKey(u => u.Id);.我仍然得到同样的错误!不知道我在这里做错了什么:(.编辑:是的,我打电话给基类,这不是问题所在.
注意:我知道我可以为每个携带todo项目ID集合的用户添加一个字段,而不是使用外键,但我不确定这是否是这样做的好方法.对此问题的指导表示赞赏.
database asp.net entity-framework asp.net-web-api asp.net-core
我有一个在nginx反向代理后面运行的API服务器。通过TLS保护对我的API服务器的所有请求非常重要,因为它可以处理敏感数据。
我已经设置nginx以使用TLS(LetsEncrypt),所以似乎还可以。但是,从nginx到我的API服务器的http请求仍然是不安全的请求(顺便说一下,这都是在docker容器之间发生的)。
在反向代理和API服务器之间也设置https的最佳实践吗?如果是这样,我该如何进行而不过度设计呢?