Jeb*_*eng 6 c# entity-framework-core
它在 SQLite 下工作
数据库上下文.cs
public class DbContext : DbContext
{
public DbContext(DbContextOptions<DbContext> options) : base(options)
{
}
public DbSet<User> Users { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
用户.cs
public class User : OAuthUser
{
public string FullName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
OAuthUser.cs
public class OAuthUser
{
public string Id { get; set; }
public string Email { get; set; }
public string UserName { get; set; }
public string PhoneNumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我执行了Add-Migration和Database-Update。它应该更新到我机器上的 SQLServer 但它记录了以下错误:
表“Users”中的列“Id”的类型无法用作索引中的键列。无法创建约束或索引。请参阅以前的错误。
我想要IdinOAuthUser.cs作为主键,但出现错误
由于缺乏StringLength规范而显示错误。如果是string主键,则必须指定长度,因为 sql server 中的主键是唯一索引键。
如果您希望该Id列成为主要string类型,那么您必须StringLength按如下方式放置此列:
public class OAuthUser
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[StringLength(50)]
public string Id { get; set; }
...........
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您希望Id列成auto-generated为主键,则应如下所示:
public class OAuthUser
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
...........
}
Run Code Online (Sandbox Code Playgroud)
您可以选择两者之一。
| 归档时间: |
|
| 查看次数: |
5530 次 |
| 最近记录: |