首次使用代码时不会创建表格EF

时间:2018-03-11 12:43:34

标签: entity-framework azure frameworks entity connection-string

所以我尝试首先使用EF代码在Azure上部署数据库。我有一个型号:

public class User
{
    [Key]
    public int PersonID { get; set; }

    [Required(ErrorMessage = "A first name is required.")]
    [StringLength(20, MinimumLength = 2, ErrorMessage = "Your firstname needs to be atleast 2 letters long")]
    [RegularExpression(@"^[a-zA-Z]*$", ErrorMessage = "Your firstname can only contain letters")]
    [Display(Name = "First Name:")]
    public string FirstName { get; set; }
}

的DataContext级:

public class DataContext : DbContext
{
    public DataContext() : base("DataContext")
    {

    }

    public DbSet<User> User { get; set; }
}

DataContextInitalizer级:

public class DataContextInitializer : DropCreateDatabaseIfModelChanges<DataContext>
{ 

}

在global.asax文件中初始化datacontext:

Database.SetInitializer(new DataContextInitializer());

然后最后连接到web.config中的数据库的字符串:

  <connectionStrings>
<add name="DataContext" connectionString="Data Source=tcp:*.database.windows.net,1433;Initial Catalog=TestApi20180311012458_db;User ID=usernamehere;Password=passwordhere" providerName="System.Data.SqlClient" />

构建解决方案时,不会创建任何表。我不知道我错过了哪里。你能看到什么错了吗?

1 个答案:

答案 0 :(得分:0)

  

构建解决方案时,不会创建任何表。我不知道我错过了哪里。你能看到什么错了吗?

您的代码只是为了连接本地项目中的Azure sql。数据初始化仅用于初始化表中的数据。但是你的桌子还没有创建。如果要在Azure sql中创建表,可以使用 this

web.config中的Azure sql连接字符串:

Enable-migrations
Add-migration initial
update-database

打开工具&gt; Nuget Mackage Manager&gt;包管理器控制台。然后输入以下代码:

$host= gethostname();
$ip = gethostbyname($host);

Migrations

之后,您可以看到这些表是在Azure Sql中创建的。

另一种方法是,您可以使用发布工具连接到Azure sql并自动使用Code First Migrations。不需要使用代码手动配置。打开发布设置以配置Azure sql。或者您可以阅读此enter image description here以了解更多详情。

article