2

我正在尝试在我的旧项目中实现新的 ASP.NET 标识。我在数据库中有一个名为 tda_Contacts 的现有表。以下代码在没有表属性的情况下可以正常工作,并创建所有新的身份相关表以及 TdaContacts 表。但是,当将现有表名放入表属性 ([Table("tda_Contacts")]) 时,它什么也不做并抛出 Invalid object name 'dbo.UserSecrets' exeption。此外,如果我在该属性中输入不同的名称,它可以正常工作并创建一个正确的表,其列和类型与现有的 tda_Contacts 完全相同。

我究竟做错了什么?如何强制它使用我现有的表?

public class IdentityUser : User
{
    public int ContactID { get; set; }
    [ForeignKey("ContactID ")]
    public virtual TdaContact TdaContact { get; set; }
}

public class CustomUserContext : IdentityStoreContext
{
    public CustomUserContext(DbContext db) : base(db)
    {
        Users = new UserStore<IdentityUser>(db);
    }
}

public class MyDbContext : IdentityDbContext<IdentityUser, UserClaim, UserSecret, UserLogin, Role, UserRole>
{
    public MyDbContext() : base("Name=MyConnectionString")
    {
    }

    public IDbSet<TdaContact> TdaContacts { get; set; }
}

[Table("tda_Contacts")]
public class TdaContact
{
    [Key]
    public int ContactID { get; set; }
    [Required]
    [MaxLength(50)]
    public string FirstName { get; set; }
    [Required]
    [MaxLength(50)]
    public string LastName { get; set; }
    [MaxLength(255)]
    public string Email { get; set; }
}

PS刚刚发现,使用带有正确外键的预先创建的IdentityUsers表到tda_Contacts,它可以按预期工作。

4

0 回答 0