2010-10-05 41 views
5

Todos sabemos que Linq to SQL (y SQLmetal/exe) es realmente un producto de calidad "prototipo" (le faltan funciones básicas como esquema "refresh" y detección de columnas nulas con valor predeterminado).LINQ to SQL valores predeterminados

¿Hay alguna manera de forma automática crear mi .dbml (similar a LINQ to SQL o SQLMetal) y tienen que detectar NOT NULL columnas que tienen un valor por defecto?

Requisitos: Tiene que ser tan "fácil" de generar como linq-to-sql o sqlmetal.


Aclaración de lo que necesito por:

tengo muchas tablas con DateCreated y DateModified campos, así como algunos bit y enumeración similar (int) columnas con valores por defecto; todos los cuales deben ser y son not null.

necesitaré para regenerar ("refresh") el .dbml después de hacer cambios a la base de datos ... para (re) establecer el Auto-Generar (o Auto-Sync) Propiedad de True no es algo que realmente me importa estar haciendo casi cada vez que actualizo el esquema.

el siguiente código (basado en Handling Default Values With LINQ to SQL):

namespace Project.Data 
{ 
    public partial class ProjectDataContext 
    { 
     partial void OnCreated() 
     { 
      if (this.DateCreated == null) 
      { 
       this.DateCreated = DateTime.UtcNow; 
      } 
     } 
    } 
} 

no compila (con errores ... does not contain a definition for 'DateCreated' ...). Realmente vi sin razón debería compilar ... pero le di una oportunidad de todos modos. Tal vez simplemente no entiendo el contexto del código de su ejemplo.

+0

posible duplicado de [¿Cómo aseguro que Linq to Sql no anula ni viola los valores predeterminados de DB no anulables?] (http://stackoverflow.com/questions/201706/how-do-i-ensure-linq-to-sql-doesnt-override-or-violate-non-nullable-db-default-v) – bzlm

+4

Esa publicación tiene 2 años e insinúa la idea de que algún día ser apoyado Estoy buscando para ver si hoy es ese día. :-) –

+0

¿Alguien sabe de progreso en esto todavía? –

Respuesta

-1
this.DateCreated ?? DateTime.UtcNow 

?? significa que si el lado izquierdo es nulo, utilice el lado derecho

+1

eso es cierto. Pero no importa realmente importa. –

+0

sí. becus el objeto linq es tipo de System.Nullable Bonshington