【问题标题】:Rename PhoneNumber to MobileNumber and use PhoneNumber as an additional column?将电话号码重命名为手机号码并将电话号码用作附加列?
【发布时间】:2015-11-25 09:26:27
【问题描述】:

我正在使用带有 EF 的 ASP.NET Identity 2。在 ASP.NET Identity 中,我有 PhoneNumber 属性,在我的情况下(业务方面)是手机号码。但我也有用作办公电话的电话号码。现在我希望我的所有代码都使用 MobileNumber(用于移动设备)和 PhoneNumber(用于办公室)。我可以这样做,How can I change the table names when using Visual Studio 2013 ASP.NET Identity? 但在这种情况下,我需要更改属性名称。我想更改属性名称以及数据库列名称。

【问题讨论】:

    标签: c# asp.net asp.net-identity


    【解决方案1】:

    只需重命名您班级的属性。创建 EF 迁移。它很可能会删除您尝试重命名的现有列并添加新列。将该迁移代码替换为 RenameColumn("dbo.MyTableName", "OldColumnName", "NewColumnName");

    【讨论】:

    • 问题是这个属性被框架使用了。我可以在 DB 中更改,但不能在课堂上更改。
    • 怎么样?框架如何知道他必须使用 MobileNumber 属性而不是 PhoneNumber?请记住,它在基本身份类中定义。
    • 哦,没有意识到你在谈论IdentityUser 上的财产。我会继承 IdentityUser 并在继承的类上添加一个新属性——无论你需要什么。不要打扰内置的PhoneNumber
    【解决方案2】:

    您可以从 IdentityUser 类继承您的模型并向其添加新属性

     public class User : IdentityUser
    {
        public string MobileNumber { get; set; }
    
    }
    

    并且要重命名数据库中的列,请使用此代码

       protected override void OnModelCreating(DbModelBuilder builder)
    {
        builder.Entity<User>()
             .Property(u => u.PhoneNumber)
             .HasColumnName("NewName");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多