Вам не нужно использовать 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; }
}
}