Am o DB SQL Server cu un tabel cu aceste câmpuri:
- Un
bit
cu valoarea implicită 1, NOT NULL
.
-
smalldatetime
cu valoarea implicită gettime()
NOT NULL
int
fără valoare implicită, IDENTITY
, NOT NULL
Când generăm Linq la SQL pentru acest tabel, se întâmplă următoarele:
- Bitul
nu este tratat special.
-
smalldatetime
nu este tratat special.
-
int
este marcat ca IsDbGenerated
.
Acest lucru înseamnă că atunci când fac inserturi folosind Linq la SQL, se vor întâmpla următoarele:
- The
bit
will be sent as 0, overriding the default value. Right?
- 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?
- The
IsDbGenerated
int
will not be sent; the DB will generate a value which Linq to SQL will then read back.
What changes do I have to make to make this scenario work?
Pentru a rezuma: Vreau câmpuri non-nullable cu valori implicite atribuite DB, dar nu le vreau IsDbGenerated
dacă înseamnă că nu pot oferi valori pentru ele atunci când fac actualizări sau inserări folosind Linq la SQL. De asemenea, nu le vreau IsDbGenerated
daca inseamna ca trebuie sa schimb mana codul generat de Linq catre SQL.
EDIT: Răspunsul pare a fi o limitare în Linq la SQL curent.