<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Getting started with Mindscape LightSpeed</title>
	<atom:link href="http://www.mindscapehq.com/blog/index.php/2007/06/10/getting-started-with-mindscape-lightspeed/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mindscapehq.com/blog/index.php/2007/06/10/getting-started-with-mindscape-lightspeed/</link>
	<description>The official blog of Mindscape</description>
	<lastBuildDate>Tue, 07 Feb 2012 19:49:55 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Sun</title>
		<link>http://www.mindscapehq.com/blog/index.php/2007/06/10/getting-started-with-mindscape-lightspeed/comment-page-1/#comment-787</link>
		<dc:creator>Sun</dc:creator>
		<pubDate>Mon, 25 Jun 2007 09:50:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.mindscape.co.nz/blog/?p=32#comment-787</guid>
		<description>Hi Andrew, 

Thanks for the reply. I&#039;m downloading the beta release and gonna have a play around with it. 

Unit tests? what are those, never heard of them :P

Cheers!

Sun</description>
		<content:encoded><![CDATA[<p>Hi Andrew, </p>
<p>Thanks for the reply. I&#8217;m downloading the beta release and gonna have a play around with it. </p>
<p>Unit tests? what are those, never heard of them :P</p>
<p>Cheers!</p>
<p>Sun</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Peters</title>
		<link>http://www.mindscapehq.com/blog/index.php/2007/06/10/getting-started-with-mindscape-lightspeed/comment-page-1/#comment-784</link>
		<dc:creator>Andrew Peters</dc:creator>
		<pubDate>Sun, 24 Jun 2007 23:13:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.mindscape.co.nz/blog/?p=32#comment-784</guid>
		<description>Hi Sun,

LightSpeed combines traditional O/R Mapping with support for building .NET domain models (validation, data-binding etc.) It differs from other frameworks primarily in philosophy. Basically, convention over configuration (RoR style) so that if you are trying to solve the 95% case then you can move as quickly as possible. The framework is small and fast: a single 120KB dll that performs twice as fast as NHibernate (2MB worth of dlls) on our internal benchmarks. One of our internal mantras for LightSpeed is: &quot;The utorrent of O/R Mapping.&quot; :-) Another prime focus is usability - we have tried to make the API as intuitive as possible. It uses patterns from Domain-Driven Design such as Repository, Unit of Work and Specification.

The problem of changing the database schema underneath your data access layer occurs irrespective of whether you are using an O/RM. As you point out you can use code generation to generate your domain model classes off of your database schema and LightSpeed is good candidate for code generation. However, beware that code generation can have a significant negative impact on your day-to-day build process - i.e. It will slow you down.

The real solution to the problem is actually quite simple: Write unit tests. You do write tests don&#039;t you? :-)

Cheers,

Andrew.</description>
		<content:encoded><![CDATA[<p>Hi Sun,</p>
<p>LightSpeed combines traditional O/R Mapping with support for building .NET domain models (validation, data-binding etc.) It differs from other frameworks primarily in philosophy. Basically, convention over configuration (RoR style) so that if you are trying to solve the 95% case then you can move as quickly as possible. The framework is small and fast: a single 120KB dll that performs twice as fast as NHibernate (2MB worth of dlls) on our internal benchmarks. One of our internal mantras for LightSpeed is: &#8220;The utorrent of O/R Mapping.&#8221; :-) Another prime focus is usability &#8211; we have tried to make the API as intuitive as possible. It uses patterns from Domain-Driven Design such as Repository, Unit of Work and Specification.</p>
<p>The problem of changing the database schema underneath your data access layer occurs irrespective of whether you are using an O/RM. As you point out you can use code generation to generate your domain model classes off of your database schema and LightSpeed is good candidate for code generation. However, beware that code generation can have a significant negative impact on your day-to-day build process &#8211; i.e. It will slow you down.</p>
<p>The real solution to the problem is actually quite simple: Write unit tests. You do write tests don&#8217;t you? :-)</p>
<p>Cheers,</p>
<p>Andrew.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sun</title>
		<link>http://www.mindscapehq.com/blog/index.php/2007/06/10/getting-started-with-mindscape-lightspeed/comment-page-1/#comment-776</link>
		<dc:creator>Sun</dc:creator>
		<pubDate>Sun, 24 Jun 2007 12:03:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.mindscape.co.nz/blog/?p=32#comment-776</guid>
		<description>Hiya, a newbie from D&amp;I Intergen wlg here.

My limited understanding of LightSpeed, essentially it&#039;s an O/RM technology... so apart from the plumbing code that most of the O/RM products out there are able to hide away, what is it that LightSpeed stands out comparing to others like Base4.net from alex.

Whenever I see table field names hardcoded in a class, my hands start to sweat. With my very limited experience with O/RMs, they are not very resilient db schema changes. Say if I went ahead and changed &quot;ReferenceName&quot; in the database directly. The above code wouldn&#039;t be able to pick it up at compile time, could it? and I guess It will throw an exception or something sort in runtime if I&#039;m to temper with the data in that field? From that assumption, I&#039;ll have to change this hardcoded string to whatever I&#039;ve renamed the field name to.

I am just thinking out loud here without doing much research on any solutions to this problem. Is it possible to design an O/RM in a way that, this data access layer/project that&#039;s based on an O/RM, at compile time, is able to pick up the table name and fields from the respective metadata tables and code-gen these business enitity classes i.e. ConfigurationItem in this case? Then, if any existing business logic code that&#039;s written against these business entity classes will fail during compile time rather than runtime which I would have had in your example?</description>
		<content:encoded><![CDATA[<p>Hiya, a newbie from D&amp;I Intergen wlg here.</p>
<p>My limited understanding of LightSpeed, essentially it&#8217;s an O/RM technology&#8230; so apart from the plumbing code that most of the O/RM products out there are able to hide away, what is it that LightSpeed stands out comparing to others like Base4.net from alex.</p>
<p>Whenever I see table field names hardcoded in a class, my hands start to sweat. With my very limited experience with O/RMs, they are not very resilient db schema changes. Say if I went ahead and changed &#8220;ReferenceName&#8221; in the database directly. The above code wouldn&#8217;t be able to pick it up at compile time, could it? and I guess It will throw an exception or something sort in runtime if I&#8217;m to temper with the data in that field? From that assumption, I&#8217;ll have to change this hardcoded string to whatever I&#8217;ve renamed the field name to.</p>
<p>I am just thinking out loud here without doing much research on any solutions to this problem. Is it possible to design an O/RM in a way that, this data access layer/project that&#8217;s based on an O/RM, at compile time, is able to pick up the table name and fields from the respective metadata tables and code-gen these business enitity classes i.e. ConfigurationItem in this case? Then, if any existing business logic code that&#8217;s written against these business entity classes will fail during compile time rather than runtime which I would have had in your example?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Peters</title>
		<link>http://www.mindscapehq.com/blog/index.php/2007/06/10/getting-started-with-mindscape-lightspeed/comment-page-1/#comment-713</link>
		<dc:creator>Andrew Peters</dc:creator>
		<pubDate>Wed, 20 Jun 2007 05:02:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.mindscape.co.nz/blog/?p=32#comment-713</guid>
		<description>Hi Greg,

What your describing sounds like an inheritance mapping scenario. Basically, when you want to map an inheritance structure to the database. There are three common patterns for implementing this: Single Table Inheritance, Class table inheritance and Concrete Table Inheritance. See here for a bit more detail on these patterns: http://www.martinfowler.com/eaaCatalog/

We currently only support Single Table Inheritance (mapping an inheritance hierarchy to a single table) because it is simple and has the best performance. Personally, I would be hesitant about using a multi-table strategy because I don&#039;t believe it buys you much apart from perhaps saving a small amount of disk space.

With respect to associations, an Entity may have an arbitrary number of one-to-many or many-to-one associations, including self-referencing hierarchies. So a Job could have a collection of child jobs as well as a parent Job and an associated Customer.

LightSpeed has been in development for about 5 months and we are planning on releasing our first v1 release candidate this Friday.

Cheers,

Andrew.</description>
		<content:encoded><![CDATA[<p>Hi Greg,</p>
<p>What your describing sounds like an inheritance mapping scenario. Basically, when you want to map an inheritance structure to the database. There are three common patterns for implementing this: Single Table Inheritance, Class table inheritance and Concrete Table Inheritance. See here for a bit more detail on these patterns: <a href="http://www.martinfowler.com/eaaCatalog/" rel="nofollow">http://www.martinfowler.com/eaaCatalog/</a></p>
<p>We currently only support Single Table Inheritance (mapping an inheritance hierarchy to a single table) because it is simple and has the best performance. Personally, I would be hesitant about using a multi-table strategy because I don&#8217;t believe it buys you much apart from perhaps saving a small amount of disk space.</p>
<p>With respect to associations, an Entity may have an arbitrary number of one-to-many or many-to-one associations, including self-referencing hierarchies. So a Job could have a collection of child jobs as well as a parent Job and an associated Customer.</p>
<p>LightSpeed has been in development for about 5 months and we are planning on releasing our first v1 release candidate this Friday.</p>
<p>Cheers,</p>
<p>Andrew.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg</title>
		<link>http://www.mindscapehq.com/blog/index.php/2007/06/10/getting-started-with-mindscape-lightspeed/comment-page-1/#comment-712</link>
		<dc:creator>Greg</dc:creator>
		<pubDate>Wed, 20 Jun 2007 04:18:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.mindscape.co.nz/blog/?p=32#comment-712</guid>
		<description>Hi Andrew

Thanks for the quick reply.  We have not yet looked into SQLite.

As for the two table scenario we have the following.

JobBaseData Table, made up of a JobID, JobState, and other fields.
JobSubClassData Table JobID (FK to Job Base ), and other subclass fields

The two tables linked together describe a Job in our System.

We may have say 2 different JobSubClass Tables, each one storing specific data for that particular JobType.  ( we would create 2 objects JobType1 and JobType2 to represent the job data, both objects would derive from a Job Base object) ..  Jobs are also Hierarchical, and a child job could have multiple parents ( Many To 1 Relationship ) ( not that a parent might be another job, or could be say a Customer or some other object )

Would this be possible in your system?  How long has Lightspeed been in development?

Cheers</description>
		<content:encoded><![CDATA[<p>Hi Andrew</p>
<p>Thanks for the quick reply.  We have not yet looked into SQLite.</p>
<p>As for the two table scenario we have the following.</p>
<p>JobBaseData Table, made up of a JobID, JobState, and other fields.<br />
JobSubClassData Table JobID (FK to Job Base ), and other subclass fields</p>
<p>The two tables linked together describe a Job in our System.</p>
<p>We may have say 2 different JobSubClass Tables, each one storing specific data for that particular JobType.  ( we would create 2 objects JobType1 and JobType2 to represent the job data, both objects would derive from a Job Base object) ..  Jobs are also Hierarchical, and a child job could have multiple parents ( Many To 1 Relationship ) ( not that a parent might be another job, or could be say a Customer or some other object )</p>
<p>Would this be possible in your system?  How long has Lightspeed been in development?</p>
<p>Cheers</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Peters</title>
		<link>http://www.mindscapehq.com/blog/index.php/2007/06/10/getting-started-with-mindscape-lightspeed/comment-page-1/#comment-711</link>
		<dc:creator>Andrew Peters</dc:creator>
		<pubDate>Wed, 20 Jun 2007 04:03:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.mindscape.co.nz/blog/?p=32#comment-711</guid>
		<description>Hi Greg,

Cheers for taking a look. A couple of questions:

- Have you had a look at SQLite for your mobile scenario? The main reason we don&#039;t support CE at this stage is due to it&#039;s lack of support for batching which is required to use eager loaded associations. That&#039;s not to say we can&#039;t support it.

- Can you tell me a little bit about your two table scenario?

I would strongly advise against building your own solution :-) If LightSpeed doesn&#039;t fit in this case I would recommend taking a look at Base4.Net from Alex James.

Cheers,

Andrew.</description>
		<content:encoded><![CDATA[<p>Hi Greg,</p>
<p>Cheers for taking a look. A couple of questions:</p>
<p>- Have you had a look at SQLite for your mobile scenario? The main reason we don&#8217;t support CE at this stage is due to it&#8217;s lack of support for batching which is required to use eager loaded associations. That&#8217;s not to say we can&#8217;t support it.</p>
<p>- Can you tell me a little bit about your two table scenario?</p>
<p>I would strongly advise against building your own solution :-) If LightSpeed doesn&#8217;t fit in this case I would recommend taking a look at Base4.Net from Alex James.</p>
<p>Cheers,</p>
<p>Andrew.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg</title>
		<link>http://www.mindscapehq.com/blog/index.php/2007/06/10/getting-started-with-mindscape-lightspeed/comment-page-1/#comment-708</link>
		<dc:creator>Greg</dc:creator>
		<pubDate>Wed, 20 Jun 2007 02:33:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.mindscape.co.nz/blog/?p=32#comment-708</guid>
		<description>Hey Guys.

Nice product, not sure if it would do what we want, as we want to run on .net CF and full framework and use SqlCE and Sql 2005 as our associated Data Stores.  Our objects would also need to gather data from at least 2 tables in the tables and i believe your product only does 1 -&gt; 1 object -&gt; table type mappings?  Anyways i&#039;m interested to know how long you have been working on the product, and what sort of resource and energy has gone into it?  Trying to convince management that we are best to buy rather than build :) based on certain timeframes.

Cheers</description>
		<content:encoded><![CDATA[<p>Hey Guys.</p>
<p>Nice product, not sure if it would do what we want, as we want to run on .net CF and full framework and use SqlCE and Sql 2005 as our associated Data Stores.  Our objects would also need to gather data from at least 2 tables in the tables and i believe your product only does 1 -&gt; 1 object -&gt; table type mappings?  Anyways i&#8217;m interested to know how long you have been working on the product, and what sort of resource and energy has gone into it?  Trying to convince management that we are best to buy rather than build :) based on certain timeframes.</p>
<p>Cheers</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: basic (Requested URI is rejected)
Database Caching 4/16 queries in 0.106 seconds using disk: basic
Content Delivery Network via cdn.mindscapehq.com

Served from: www.mindscapehq.com @ 2012-02-08 16:23:17 -->
