I have an SQL Server DB with a table with these fields:
bit with the default value 1, NOT NULL.smalldatetime
This means that when I make inserts using Linq to SQL, the following will happen:
- The bit will be sent as 0, overriding the default value. Right? - Correct
- The smalldatetime will be sent as an uninitialized System.DateTime, producing an error in SQL server since it doesn't fall with the SQL Server smalldatetime range. Right? - What is sent is DateTime.MinValue
- The IsDbGenerated int will not be sent; the DB will generate a value which Linq to SQL will then read back. - If DB generated is set then the value is created by the database, if not then Linq expects the user to set the value.
Your best bet is to set them in the constructor of the object, or on the private fields, if you are not using automatic properties.