I’ve been a huge fan of LINQ to SQL. But EF 3.5 (first release) didn’t quite do it for me. I didn’t like the lack of support for foreign keys, no Single() LINQ support,
An example of lack of foreign keys:
using(NorthwindEntities northwindEntities = new NorthwindEntities()) { Product p = new Product() { Category = northwindEntities.Categories.Where(c => c.CategoryID == 1).First, ProductName = "French fries", UnitPrice = 20, Discontinued = false, QuantityPerUnit = "1 kg bag", Supplier = northwindEntities.Suppliers.Where(s => s.SupplierID == 1).First }; northwindEntities.AddToProducts(p); northwindEntities.SaveChanges(); }
As you can see you need to fetch the category and the Supplier seperatly. You can’t just do CategoryID = 1
But when we launch the wizard for EF 4.0 we get this:
Which results in this:
using(NorthwindEntities northwindEntities = new NorthwindEntities()) { Product p = new Product() { CategoryID = 1, ProductName = "French fries", UnitPrice = 20, Discontinued = false, QuantityPerUnit = "1 kg bag", SupplierID = 1 }; northwindEntities.AddToProducts(p); northwindEntities.SaveChanges(); }
And there is Single support!
using(NorthwindEntities ne = new NorthwindEntities()) { var result = ne.Suppliers.Where(sup => sup.SupplierID == 1).Single(); }
So it just got a little more mature.
I’m hoping to be able to test it (and use it!) more in the future and new projects
Hope it helps
-Kristof