¿Es posible asignar una columna de tabla a un campo de clase en lugar de una propiedad de clase y cómo?Código de Entity Framework Primero: ¿Cómo mapear campos privados?
usted puede hacerlo :)
Siga este enlace: http://weblogs.asp.net/ricardoperes/archive/2013/08/22/mapping-non-public-members-with-entity-framework-code-first.aspx
Ésta es una solicitud común, y realmente tiene sentido; necesitamos usar expresiones LINQ y un poco de magia de reflexión. En primer lugar, una función de ayuda para el retorno de una expresión que apunta a un miembro:
public static class ExpressionHelper
{
public static Expression<Func<TEntity, TResult>> GetMember<TEntity, TResult>(String memberName)
{
ParameterExpression parameter = Expression.Parameter(typeof(TEntity), "p");
MemberExpression member = Expression.MakeMemberAccess(parameter, typeof(TEntity).GetMember(memberName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Single());
Expression<Func<TEntity, TResult>> expression = Expression.Lambda<Func<TEntity, TResult>>(member, parameter);
return (expression);
}
}
Entonces, lo llamamos en el método DbContext.OnModelCreating, como un parámetro para StructuralTypeConfiguration.Property:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Project>().Property(ExpressionHelper.GetMember<Project, Decimal>("Budget")).IsRequired();
base.OnModelCreating(modelBuilder);
}
+1 Estoy de acuerdo. He estado buscando un enlace que lo explique antes de publicarlo, pero no lo encontré. De todos modos, estoy bastante seguro de que así es como funciona EF. – Jonathan
Ya he leído todos estos documentos. Por cierto, son viejos. El nuevo RC incluso tiene cambios de última hora. Es por eso que pregunto. ef ef es – mynkow
Es cierto que hay cambios de frenado, pero el soporte para mapeo de campos no estaba en la agenda AFAIK. Y lo siento por los documentos fechados, no sabía el nivel de su conocimiento EF y pensé que podrían ser útiles de todos modos. –