代码优先.net核心发布没有数据库表

时间:2018-10-29 12:36:46

标签: database ef-code-first azure-devops publish

我对Azure和代码都是新手。我有一个在本地工作的应用程序。我使用Visual Studio向导发布了Web项目。一切都很好。 但是它缺少所有的数据库表。

我看了一个带有“ DefaultConnection”的连接字符串。在本地其“ Server =(localdb)\ ...”。 在蔚蓝中,它显示为“ Data Source = tcp:Sniipedb.database.windows.net,1433”

我有一个db初始化程序,可以为数据添加种子,但是它只能在本地工作。 我认为我的AppDBContext应该已经创建了数据库。

在线站点上的实际错误是“ SqlException:无效的对象名称'Users'。 System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔值breakConnection,操作wrapCloseInAction)“

但是,当我查看数据库时,没有表。

我正在制作一个简单的杂务应用程序。用户是一个数据库表。

要创建用户,我具有以下内容: 在startup.cs中

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<AppDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    services.AddTransient<IUserRepository, UserRepository>();
    services.AddTransient<ITaskRepository, TaskRepository>();
    services.AddMvc();
}

在AppDBContext中:DbContext

public DbSet<User> Users {Get; set;}

用户是一个简单的类

public class User
{
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }        
    [Key]
    public string EMailAddress { get; set; }   
    public ICollection<UserTask> UserTasks { get; set; }
}

我有一个DBInitializer,它为新用户提供种子并保存上下文。

这在本地计算机上可以正常工作。

1 个答案:

答案 0 :(得分:0)

对我来说,解决方案是配置发布。在设置中,它具有“数据库”选项,其中未选中“在运行时使用此连接字符串”。

还在“实体框架迁移”下未选中“在发布时应用此迁移”。

通过检查这两个,然后保存然后发布即可。