【发布时间】:2020-02-08 11:58:20
【问题描述】:
在 SQLite 下工作
DbContext.cs
public class DbContext : DbContext
{
public DbContext(DbContextOptions<DbContext> options) : base(options)
{
}
public DbSet<User> Users { get; set; }
}
用户.cs
public class User : OAuthUser
{
public string FullName { get; set; }
}
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; }
}
然后我执行了Add-Migration 和Database-Update。它应该更新到我机器上的 SQLServer 但它记录了这个错误:
表“Users”中的列“Id”属于无效类型,不能用作索引中的键列。 无法创建约束或索引。查看以前的错误。
我希望OAuthUser.cs中的Id作为主键,但是出现错误
【问题讨论】:
-
键列是 SQL 数据库中的主键。所以类型必须匹配,并且类型需要一个 Hash 方法。普通的 c# 类 line int 或 string 已内置 Hash 方法。您是否在 SQL 数据库中检查了用于密钥的类型?
-
如果你想让
DbSet<User>为OrganizationUser工作,为什么? -
现在您的数据库中有
User。但是User和你的OrganizationUser和OAuthUser有什么关系呢?为什么不给我们看看User的源代码?