使用链接到新ASP.NET标识中现有表的复杂用户类型

时间:2013-08-21 13:02:33

标签: asp.net entity-framework asp.net-identity

我正在尝试在旧项目中实现新的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的正确外键,它可以正常工作。

0 个答案:

没有答案