.NET-LINQ ve Microsoft’un Erişim Veritabanı | sıcak çevrimiçi

Womanne

Member
Nürnberg’deki SQL Server ve .NET Konferansında (SNEK), Microsoft Access veritabanlarına ADO.NET Entity Framework/LINQ-to-Entities kullanarak erişmenin mümkün olup olmadığı soruldu. Microsoft böyle bir sürücü sağlamaz. Ayrıca, oturum açma için bir Entity Framework sürücüsü sağlayan herhangi bir 3. tarafın farkında değilim.

Duyuru



Ancak, LINQ IQueryable Toolkit’in bir parçası olarak, Erişim için doğrudan bir LINQ sağlayıcısı vardır (IQToolkit.Data.Access.dll). Kendim kullandığım bu sağlayıcı, verileri okumak ve ayrıca LINQ-to-SQL ve ADO.NET Entity Framework’e benzer bir API aracılığıyla depolamak için LINQ’u (ilişkili Lambda sözdizimi dahil) kullanmanıza izin verir. Örnek:

var provider = DbEntityProvider.From(@"c:dataNorthwind.accdb",
"Test.Northwind");
var ns = new NorthwindSession(provider);
cust = ns.Customers.Single(c => c.CustomerID == "XX1");
cust.ContactName = "Contact Modified";
ns.SubmitChanges();

Ancak, Access tabloları için sınıfları kendiniz oluşturmanız gerekir. (Veya kendi oluşturucunuzu yazın. Bunun için bir T4 şablonu yaptım). Visual Studio için tasarımcı yoktur. Bunun gibi POCO sınıfları yeterlidir:

namespace Test
{
public class Customer
{
public string CustomerID;
public string ContactName;
public string CompanyName;
public string Phone;
public string City;
public string Country;
public IList<Order> Orders;
}
...
}

Alternatif olarak, eşleme, .NET niteliklerine sahip notlar kullanılarak da kontrol edilebilir:


[Column(Member = "CustomerId", IsPrimaryKey = true)]
[Column(Member = "ContactName")]
[Column(Member = "CompanyName")]
[Column(Member = "Phone")]
[Column(Member = "City", DbType="NVARCHAR(20)")]
[Column(Member = "Country")]
[Association(Member = "Orders", KeyMembers = "CustomerID",
RelatedEntityID = "Orders", RelatedKeyMembers = "CustomerID")]
public override IEntityTable<Customer> Customers
{
get { return base.Customers; }
}

Web’deki diğer kullanıcılar, denemediğim aşağıdaki LINQ ve Access ile ilgili çözümleri bildiriyor:

Duyuru

  • Ayrıca Access için LINQ-to-SQL kullanabilmeniz gerekir. Bir kullanıcı, bir forumda bunu başardığından bahseder (ama yine bir tasarımcı olmadan).
  • ALINQ ürününden birkaç kez bahsedilmektedir. Ancak, ilgili web sitesi http://www.alinq.org/ şu anda kullanılamıyor.

()



Haberin Sonu
 
Üst