有没有可能将表格列映射到类字段而不是类属性,如何实现?
你可以做到这一点:)
请按照以下链接操作:http://weblogs.asp.net/ricardoperes/archive/2013/08/22/mapping-non-public-members-with-entity-framework-code-first.aspx 这是一个常见的需求,非常有意义;我们需要使用LINQ表达式和一些反射技巧。首先,提供一个帮助函数来返回指向成员的表达式:
你可以做到这一点:)
请按照以下链接操作:http://weblogs.asp.net/ricardoperes/archive/2013/08/22/mapping-non-public-members-with-entity-framework-code-first.aspx 这是一个常见的需求,非常有意义;我们需要使用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);
}
}
然后,我们将其作为参数传递给StructuralTypeConfiguration.Property,并在DbContext.OnModelCreating方法上调用它:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Project>().Property(ExpressionHelper.GetMember<Project, Decimal>("Budget")).IsRequired();
base.OnModelCreating(modelBuilder);
}