所以我尝试首先使用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" />
构建解决方案时,不会创建任何表。我不知道我错过了哪里。你能看到什么错了吗?
答案 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);
之后,您可以看到这些表是在Azure Sql中创建的。
另一种方法是,您可以使用发布工具连接到Azure sql并自动使用Code First Migrations。不需要使用代码手动配置。打开发布设置以配置Azure sql。或者您可以阅读此以了解更多详情。