2011-06-08 63 views
10

tengo un modelo como esteEntity Framework - El valor por defecto para el establecimiento a través de anotaciones de datos

public class MyModel 
{ 
    public int MyModelId { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public string Title { get; set; } 
} 

me preguntaba si hay una manera, utilizando anotaciones de datos, para establecer el valor de una propiedad - por ejemplo Título - por defecto a otro valor de propiedad, es decir, Nombre. Algo así como:

if(MyModel.Title == "") MyModel.Title = MyModel.Name; 
+0

Posible Dupe: http://stackoverflow.com/questions/40730/how-do-you-give-ac-auto-property-a-default-value – Prescott

+0

Estoy tratando de lograr esto con Anotaciones de datos, aunque no No creo que sea posible. De todos modos, no creo que sea una tontería. – noinstance

+0

no es lo mismo, pero si lee las respuestas y comentarios verá que responden a su pregunta – Prescott

Respuesta

4

se puede decir que el marco de la entidad de base de datos se encargará de que la propiedad mediante la edición de este inmueble en SSDL del archivo edmx.

Inicialmente

<Property Name="CompanyName" Type="nvarchar" Nullable="false" MaxLength="40" />

tenemos cambiarlo a

<Property Name="CompanyName" Type="nvarchar" Nullable="false" MaxLength="40" StoreGeneratedPattern="Computed" />

estableciendo StoreGeneratedPattern = "computarizada" nos puede decir a EF que el valor de la propiedad será insertado por DB.

Para una edición SSDL

  1. Haga clic derecho en el archivo edmx, abierto con XML Editor (texto).

nombre 2.Ctrl + F de la propiedad y que sólo cambia la propiedad

No sé es que hay una manera de hacerlo con anotaciones de datos.

10

Si desea el valor predeterminado, configúrelo en el constructor de la entidad predeterminada (sin parámetros). No es necesario tener una anotación de datos para algo que pueda hacer directamente.

+1

Los valores predeterminados son útiles al agregar una columna que no admite nulos a una tabla existente con registros en ella . Estaba buscando una forma de hacerlo y me encontré con esta pregunta: ¿hay alguna manera de especificar el valor que se debe llenar para todos los registros existentes? – Crake

+4

@Crake esto debería ser probablemente una pregunta separada, pero pude hacer esto con 'defaultValueSql' en mi migración de datos:' AddColumn ("ExistingTable", "NewColumn", c => c.Int (nullable: false, defaultValueSql: "0")); '(cambie el tipo y el valor predeterminado según sea necesario) – snumpy

+0

¡Gracias, eso funcionó para mí! – Crake

0

Es imposible establecer atributo argumento como una función en general, obtendrá un error:

"Un argumento atributo debe ser una expresión constante, typeof expresión o expresión gama creación de un atributo tipo de parámetro"

Cuestiones relacionadas