我正在尝试在旧项目中实现新的ASP.NET身份。我在数据库中有一个名为tda_Contacts的现有表。以下代码在没有table属性的情况下工作正常,并创建所有新的身份相关表以及TdaContacts表。但是当把现有的表名放在表属性([Table(“tda_Contacts”)])中时,它什么都不做,并抛出无效的对象名'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; }
}
P.S。刚发现使用预先创建的IdentityUsers表和tda_Contacts的正确外键,它可以正常工作。