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