public void Projecting2()
        {
            ActiveRecordStarter.Initialize(GetConfigSource(), typeof(Widget));

            using (new SessionScope())
            {
                Recreate();
                Widget.DeleteAll();

                var widget = new Widget {Name = "foo"};
                widget.Save();

                var orderedQueryable = ActiveRecordLinqBase<Widget>.Queryable;
                var name = (from w in orderedQueryable
                            where w.Name.StartsWith("f")
                            select w.Name).First();

                Assert.IsNotNull(name);
                Assert.AreEqual("foo", name);
            }
        }
		public void Projecting()
		{
			ActiveRecordStarter.Initialize(GetConfigSource(), typeof(Widget));
			Recreate();
			Widget.DeleteAll();

			var widget = new Widget { Name = "foo" };
			widget.Save();

			var orderedQueryable = ActiveRecordLinqBase<Widget>.Queryable;
			var widgets = (from w in orderedQueryable
						   where w.Name.StartsWith("f")
						   select w.Name).ToList();

			Assert.IsNotNull(widgets);
			Assert.AreEqual("foo", widgets.Single());
		}
        public void UsingLinqViaSessionScopeVariable()
        {
            ActiveRecordStarter.Initialize(GetConfigSource(), typeof(Widget));

            using (ISessionScope scope = new SessionScope())
            {
                Recreate();
                Widget.DeleteAll();

                var widgets = from w in scope.AsQueryable<Widget>() select w;
                Assert.IsNotNull(widgets);
                Assert.AreEqual(0, widgets.Count());

                Widget widget = new Widget { Name = "Hello world" };
                widget.Save();

                widgets = from w in scope.AsQueryable<Widget>() where w.Name == "Hello World" select w;
                Assert.IsNotNull(widgets);
                Assert.AreEqual(1, widgets.Count());
            }
        }
		public void UsingLinqFromNonLinqBaseClass()
		{
			ActiveRecordStarter.Initialize(GetConfigSource(), typeof(Widget));

			Recreate();
			Widget.DeleteAll();

			Widget widget0 = new Widget { Name = "Hello world" };
			widget0.Save();

			using (new SessionScope())
			{
				var widgets = from w in ActiveRecordLinq.AsQueryable<Widget>() select w;
				Assert.IsNotNull(widgets);
				Assert.AreEqual(1, widgets.Count());

				var widget = (from w in ActiveRecordLinq.AsQueryable<Widget>() select w).First();
				Assert.IsNotNull(widget);
				Assert.AreEqual("Hello world", widget.Name);

				var widget2 = ActiveRecordLinq.AsQueryable<Widget>().First(w => w.Name == "Hello World");
				Assert.IsNotNull(widget2);
				Assert.AreEqual("Hello world", widget2.Name);

				Assert.AreSame(widget2, widget);
			}
		}