static void Main(string[] args) { if (!File.Exists(DbPath)) { throw new Exception("Database file does not exist!"); } using (OleDbConnection connection = new OleDbConnection(DbConnString)) using (DataRepositoryDataContext db = new DataRepositoryDataContext(connection)) { List <dbProject> projects = new List <dbProject>(); for (int i = 1; i <= 10; i++) { dbProject p = new dbProject() { Title = "Project #" + i }; for (int j = 1; j <= 10; j++) { dbTask t = new dbTask() { Title = "Task #" + (i * j) }; p.dbTasks.Add(t); } projects.Add(p); } try { //This will fail to submit db.dbProjects.InsertAllOnSubmit(projects); db.SubmitChanges(); Console.WriteLine("Write succeeded! {0} projects, {1} tasks inserted", projects.Count, projects.Sum(x => x.dbTasks.Count)); } catch (Exception ex) { Console.WriteLine("Write FAILED. Details:"); Console.WriteLine(ex); Console.WriteLine(); } try { //However, if you create the items manually in Access they seem to query fine var projectsFromDb = db.dbProjects.Where(x => x.Title.Contains("#1")) .OrderBy(x => x.ProjectID) .ToList(); Console.WriteLine("Query succeeded! {0} Projects, {1} Tasks", projectsFromDb.Count, projectsFromDb.Sum(x => x.dbTasks.Count)); } catch (Exception ex) { Console.WriteLine("Query FAILED. Details:"); Console.WriteLine(ex); Console.WriteLine(); } Console.WriteLine(); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } }