是否有可能映射表列一類領域,而不是一類財產又如何?實體框架代碼優先:如何映射私有字段?
你能做到:)
這是一個普遍的要求,真正有意義的;我們需要使用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);
}
+1我很贊同。我一直在尋找一個鏈接,在發佈前解釋它,但我沒有找到它。無論如何,我非常確定這是EF如何運作的。 – Jonathan 2011-03-21 12:51:05
我已閱讀所有這些文件。順便說一句,他們是老。新的RC甚至有突破性的變化。這就是我問的原因。從現在開始 – mynkow 2011-03-21 12:57:06
確實有制動器的變化,但支持映射到領域並不在議程AFAIK。對於過時的文件抱歉,不知道你的EF知識的水平,並認爲他們可能是有用的無論如何。 – 2011-03-21 13:01:19