Est-il possible de mapper une colonne de table à un champ de classe à la place d'une propriété de classe et comment?Entity Framework Code First: Comment mapper des champs privés?
vous pouvez le faire :)
Suivez ce lien: http://weblogs.asp.net/ricardoperes/archive/2013/08/22/mapping-non-public-members-with-entity-framework-code-first.aspx
Ceci est une demande commune, et prend tout son sens; nous devons utiliser des expressions LINQ et un peu de magie de réflexion. Tout d'abord, une fonction d'aide pour retourner une expression qui pointe vers un membre:
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);
}
}
Ensuite, nous l'appelons la méthode DbContext.OnModelCreating, en tant que paramètre à StructuralTypeConfiguration.Property:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Project>().Property(ExpressionHelper.GetMember<Project, Decimal>("Budget")).IsRequired();
base.OnModelCreating(modelBuilder);
}
+1 Je suis d'accord. J'ai cherché un lien qui l'explique avant de poster, mais je ne l'ai pas trouvé. Quoi qu'il en soit, je suis à peu près sûr que c'est ainsi que fonctionne EF. – Jonathan
J'ai déjà lu tous ces documents. Btw, ils sont vieux. Le nouveau RC a même des changements de rupture. C'est pourquoi je demande. ef ef es – mynkow
Il est vrai qu'il y a des changements de freinage, mais le soutien à la cartographie des champs n'était pas à l'ordre du jour AFAIK. Et désolé pour les documents datés, ne connaissait pas le niveau de vos connaissances EF et pensé qu'ils pourraient être utiles de toute façon. –