C # dbml перестает связывать таблицы с кодом - PullRequest
0 голосов
/ 03 мая 2010

У меня иногда возникают проблемы с моим C # dbml, когда он начинает неправильно связываться.

Я не знаю, как воспроизвести точную причину проблемы, она работала идеально, пока я не изменил таблицу базы данных, а затем удалил таблицу и добавил ее в новую схему. Я получаю сообщение об ошибке «Не удалось найти тип или имя пространства имен« tbl »(отсутствует директива using или ссылка на сборку?)

Единственное исправление, которое я нашел, - это создать новый dbml, затем заново добавить таблицы и удалить старый dbml. Как только он начинает так ломаться, каждый раз, когда я меняю dbml, мне нужно повторять это исправление, очень расстраивающее.

Есть идеи, что делать или почему это происходит?

Microsoft Visual Studio 2008 Версия 9.0.30729.1 SP Microsoft .NET Framework Версия 3.5 SP1

1 Ответ

0 голосов
/ 04 мая 2010

Вам не нужно использовать dbml, чтобы использовать L2S. Вы можете создавать свои собственные классы, которые описывают таблицы вашей базы данных и их отношения.

Ниже приведена выдержка из Центра разработки данных Microsoft

Вы, безусловно, можете использовать LINQ to SQL без файлов DBML. Все, что вам нужно, это классы, украшенные атрибутами [Table] и [Column]. Например, если вы хотите запросить простую таблицу Customer, определите следующий класс:

[Table] public class Customer
{
  [Column(IsPrimaryKey=true)]  public int ID;
  [Column]                     public string Name;
}

Тогда вы можете начать делать запрос следующим образом:

var db = new DataContext();
var customers = db.GetTable<Customer>();
var query = customers.Where (c => c.Name.StartsWith ("a"));

Вы можете даже определить свойства связывания вручную - следующие создают классы для клиента и покупки в отношении один: многие:

public class DemoDataContext : DataContext
{
  public DemoDataContext (string cxString) : base (cxString) { }
  public Table<Customer> Customers { get { return GetTable<Customer>(); } }
  public Table<Purchase> Purchases { get { return GetTable<Purchase>(); } }
}

[Table] public class Customer
{
  [Column(IsPrimaryKey=true)]  public int ID;
  [Column]                     public string Name;

  [Association (OtherKey="CustomerID")]
  public EntitySet<Purchase> Purchases = new EntitySet<Purchase>();
}

[Table] public class Purchase
{
  [Column(IsPrimaryKey=true)]  public int ID;
  [Column]                     public int CustomerID;
  [Column]                     public string Description;
  [Column]                     public decimal Price;
  [Column]                     public DateTime Date;

  EntityRef<Customer> custRef;

  [Association (Storage="custRef",ThisKey="CustomerID",IsForeignKey=true)]
  public Customer Customer
  {
    get { return custRef.Entity; } set { custRef.Entity = value; }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...