public void TestLinqJoinOnId()
{
var connectionString = GetConnectionString("TestLinqJoinOnId");
var context = new MyEntityContext(connectionString);
var people = new List<IPerson>();
for (var i = 0; i < 100; i++)
{
var person = context.Persons.Create();
person.Name = "Person " + i;
person.EmployeeId = i;
people.Add(person);
}
for (var i = 0; i < 100; i++)
{
var article = context.Articles.Create();
article.Title = "Article " + i;
var publisher = people.Where(p => p.EmployeeId == i).SingleOrDefault();
Assert.IsNotNull(publisher);
article.Publisher = publisher;
}
context.SaveChanges();
Assert.AreEqual(100, context.Persons.Count());
Assert.AreEqual(100, context.Articles.Count());
var test = context.Articles.Count(a => a.Publisher != null);
Assert.AreEqual(100, test);
var allArticlesWithPublishers = (from article in context.Articles
join person in context.Persons on article.Publisher.Id equals
person.Id
select article).ToList();
Assert.AreEqual(100, allArticlesWithPublishers.Count);
var allPublishersWithArticles = (from person in context.Persons
join article in context.Articles on person.Id equals
article.Publisher.Id
select person).ToList();
Assert.AreEqual(100, allPublishersWithArticles.Count);
}