【发布时间】:2014-04-03 19:00:37
【问题描述】:
是否可以将表列映射到类字段而不是类属性以及如何映射?
你可以做到的:)
这是一个常见的要求,而且确实有道理;我们需要使用 LINQ 表达式和一些反射魔法。首先,返回一个指向成员的表达式的辅助函数:
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);
}
}
然后,我们在 DbContext.OnModelCreating 方法上调用它,作为 StructuralTypeConfiguration.Property 的参数:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Project>().Property(ExpressionHelper.GetMember<Project, Decimal>("Budget")).IsRequired();
base.OnModelCreating(modelBuilder);
}
【问题讨论】:
标签: entity-framework ef-code-first