public void TestLinqJoinOnProperty()
{
var connectionString = GetConnectionString("TestLinqJoinOnProperty");
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 allArticlesWithPublishers = (from article in context.Articles
join person in context.Persons on article.Publisher.EmployeeId equals
person.EmployeeId
select article).ToList();
Assert.AreEqual(100, allArticlesWithPublishers.Count);
var allPublishersWithArticles = (from person in context.Persons
join article in context.Articles on person.EmployeeId equals
article.Publisher.EmployeeId
select person).ToList();
Assert.AreEqual(100, allPublishersWithArticles.Count);
}