Infelizmente, Linq to SQL não suporta valores padrão de banco de dados. Veja a primeira pergunta aqui:
http:// social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/3ae5e457-099e-4d13-9a8b-df3ed4ba0bab/
O que eles estão sugerindo é que você forneça uma implementação do método Insert para a entidade em questão. A assinatura sendo
partial void Insert[EntityName](Entity instance)
Portanto, se você tivesse uma entidade chamada Person, que desejasse ter um valor padrão de "Home" para um campo PhoneNumberDesc, você poderia implementá-lo desta maneira:
partial void InsertPerson(Person instance)
{
if (string.IsNullOrEmpty(instance.PhoneNumberDesc))
instance.PhoneNumberDesc = "Home";
var insertParams = new List<object>();
var insertStatement = "insert into ...";
// build the rest of the insert statement and fill in the parameter values here...
this.ExecuteQuery(typeof(Person), insertStatement, insertParams.ToArray());
}
Você pode conseguir implementar o evento OnCreated, que é chamado com cada construtor para cada entidade. Este artigo explica um pouco sobre como os pontos de extensibilidade no Linq To SQL:http://msdn.microsoft.com/en-us/library/bb882671.aspx
Enfim, a solução é meio chata. Boa sorte!