In my application I instantiate a new Linq-to-SQL object and pass it (with some value assigned) to a WinForms window so the user can fill out the rest. 

If the user cancels the form I don't want the data to be inserted.

The problem is that when `SubmitChanges` is called the next time, the record is still inserted.

Is there an easy way to prevent that? I don't want to create a separate class with the same fields as the Linq-to-SQL class when I already have all the fields I need.

I found this article <http://www.codeproject.com/KB/linq/linq-to-sql-detach.aspx>, but it seems to solve a different problem and doesn't seem like an easy solution.

Update:
I was able to reproduce the behavior in a console app.
Here is the code I used (with different names like Customer and Country):

```
MyDatabase db = new MyDataBase(@"Data Source:d:\test.sdf");
Customer customer = new Customer();
customer.Name = "customer 1";
customer.Country = db.Country.FirstOrDefault();

db.SubmitChanges();

```

The insert happened as soon as I added the "Country" assigment line. Country data in this example is stored in a different table.