无效的对象名称

时间:2015-12-08 18:34:49

标签: c# sql-server database linq

我使用MS SQL Server Express 2014在C#中使用LINQ进行SQL连接时出现问题。

我的所作所为:

  1. 如果数据库不存在,请创建一个数据库并打开连接。数据库在名为 Accounts 的表中存储多个 Account 类型的帐户。
  2. 我尝试从此表中获取所有现有帐户,因为如果我没有创建数据库,则可以包含在上一个会话中创建的帐户。
  3. 问题:

    1. 当我启动程序时当没有数据库时,我的程序会创建数据库,它还会在 SQL Server对象资源管理器中显示一个名为 dbo的表.Accounts 。但是当我尝试在此表中添加或获取帐户时,它会崩溃。我收到错误无效的对象名称'帐户'。
    2. 当我启动我的程序当数据库已经存在时,一切正常。该数据库是程序崩溃时创建的数据库。
    3. 代码:

      我如何创建和连接(简单)

      if (!MyDataContext.DatabaseExists()) {
          MyDataContext.CreateDatabase();
      }
      MyDataContext.Connection.Open();
      

      我的查询失败(其中一个)

      var query = from account in MyDataContext.Accounts select account;
      

      DataContext

      public class MyDataContext : DataContext {
      
          public Table<Account> Accounts;
      
          public MyDataContext(string connection) : base(connection) {}
      }
      

      帐户

      [Table(Name = "Accounts")]
      public class Account {
      
          [Column(IsPrimaryKey = true)] public int Id;
      
          [Column(CanBeNull = false)] public string UserName;
      }
      

      创建数据库后如何访问我的数据库?我错过了什么吗?有没有办法明确保存数据库(不是SubmitChanges)?

      感谢您的帮助

      [解决方案/解决方法]

      所以我找到了解决这个问题的方法。如前所述,我可以在程序崩溃后访问该表并创建数据库。

      所以我现在做的是以下内容:

      if(!MyDataContext.DatabaseExists) MyDataContext.CreateDatabase();
      MyDataContext.Dispose();
      MyDataContext = new MyDataContext(connectionString);
      MyDataContext.Connection.Open();
      

      我认为应该是一个更好的解决方案,但我找不到。 Dispose()在这里是可选的,因为它应该自动处理。

0 个答案:

没有答案