Estoy usando ASP.NET MVC 3
y Entity Framework code first CTP 5
. Me preguntaba si es posible agregar propiedades adicionales que no están mapeadas en una columna de la tabla.Agregando propiedades adicionales a entidad entidad 4 código primero entidad CTP 5
Me haved una clase de noticias y se define como tal:
public class News : Entity
{
public int NewsId { get; set; }
public string Title { get; set; }
public string Body { get; set; }
public bool Active { get; set; }
}
Mi clase de contexto de base de datos:
public class MyContext : DbContext
{
public DbSet<News> Newses { get; set; }
}
En la clase de entidad Tengo una propiedad definida como:
public IList<RuleViolation> RuleViolations { get; set; }
No he codificado esta parte todavía, pero quiero que todas las reglas rotas se agreguen a esta lista cuando el objeto i s validado El error que estoy recibiendo es:
One or more validation errors were detected during model generation:
System.Data.Edm.EdmEntityType: : EntityType 'RuleViolation' has no key defined. Define the key for this EntityType.
System.Data.Edm.EdmEntitySet: EntityType: The EntitySet RuleViolations is based on type RuleViolation that has no keys defined.
Aquí está mi código reposity:
public News FindById(int newsId)
{
return context.Database.SqlQuery<News>("News_FindById @NewsId",
new SqlParameter("NewsId", newsId)).FirstOrDefault();
}
ACTUALIZACIÓN 2011-03-02:
Aquí está mi clase Entity
:
public class Entity
{
public IList<RuleViolation> RuleViolations { get; set; }
public bool Validate()
{
// Still needs to be coded
bool isValid = true;
return isValid;
}
}
Aquí está mi RuleViolation
cl culo:
public class RuleViolation
{
public RuleViolation(string parameterName, string errorMessage)
{
ParameterName = parameterName;
ErrorMessage = errorMessage;
}
public string ParameterName { get; set; }
public string ErrorMessage { get; set; }
}
Aquí está mi clase de contexto:
public class MyContext : DbContext
{
public DbSet<News> Newses { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<News>().Ignore(n => n.RuleViolations);
}
}
@David: ¿Dónde pondría exactamente este código? –
@Brendan He actualizado la respuesta con un ejemplo de código. –
@David: gracias por la respuesta extendida. ¿Debo incluir base.OnModelCreating (modelBuilder)? Si es así, ¿necesito incluir su código después o antes de este fragmento de código? –