【问题标题】:Dropped a table and now: System.Data.SqlClient.SqlException: Invalid object name 'dbo.TipDocuments'删除了一个表,现在:System.Data.SqlClient.SqlException:无效的对象名称'dbo.TipDocuments'
【发布时间】:2015-12-18 07:49:54
【问题描述】:

我为我的 ASP.NET WebForms 项目使用 Code First Entity Framework。

在我添加一个在数据库中生成一个新表的新对象之前,它工作得很好。因为我不知道我在 Seed 方法中插入的唯一测试行在数据库表中翻倍的原因是什么。因此,我从左侧服务器资源管理器面板中删除了该表,假设在下一次构建时将重新创建该表。这个假设是错误的。显然,现在我发出了这个错误。

您能否提出一种我可以重新创建我的表的方法以及我应该做些什么来避免这种损失?

这是我的初始化器类:

public class DocumentDatabaseInitializer : DropCreateDatabaseIfModelChanges<DocumentContext>
{
    protected override void Seed(DocumentContext context)
    {

        GetTipuriDocumente().ForEach(t => context.TipuriDocumente.Add(t));
    }


    private static List<TipDocument> GetTipuriDocumente()
    {
        var tipuriDocumente = new List<TipDocument>
        {
             new TipDocument
             {
                 IDTipDocument = 1,
                 NumeTipDocument = "Cerere",
                 Descriere = "Cerere",
                 TermenRezolvare = 15
             }

        };
        return tipuriDocumente;

    }
}

这是我的上下文:

public class DocumentContext : DbContext
{
    public DocumentContext() : base("Users")
    {
    }
    public DbSet<TipDocument> TipuriDocumente { get; set; }
}

这是我的 TipDocument 类:

public class TipDocument
{
    [Key]
    public int IDTipDocument { get; set; }

    [Required, Display(Name = "Tip Document")]
    public string NumeTipDocument { get; set; }

    public  string Descriere { get; set; }

    [Display(Name ="Termen de rezolvare")]
    public int TermenRezolvare { get; set; }
}

在我的 Global.asax 文件中,我有以下代码:

public class Global : HttpApplication
{
    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        // Initialize the document database.
        Database.SetInitializer(new DocumentDatabaseInitializer());
    }
}

我的 Web.config 有这个连接字符串:

    <add name="Users" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Registratura.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>

【问题讨论】:

  • 您的 EDMX 表中是否存在而 DB 中不存在?如果是这样,那么就会出现这种错误。请确认。
  • @GeekyNinja 我没有 .edmx 表,因为我为类、上下文和初始化程序编写了代码。我添加了其余的代码,以便更清晰。

标签: c# asp.net sql-server entity-framework


【解决方案1】:

每次更新数据库时,您还可以通过右键单击数据模型和从数据库更新模型来更新实体模型。

【讨论】:

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