我想忽略具有以下属性信息的属性;
PropertyInfo propertyInfo = typeof(GLAccount).GetProperty("ExampleProp");
modelBuilder.Entity<GLAccount>().Ignore(g => propertyInfo);
上面的代码块给了我以下错误;
The expression 'g => value(Dashboard.DAL.Context+<>c__DisplayClass16_0).propertyInfo' is not a valid property expression. The expression should represent a property: C#: 't => t.MyProperty' VB.Net: 'Function(t) t.MyProperty'.'
我该如何解决这个问题?谢谢。
最佳答案
如果您使用的 API 需要表达式树,则需要手动构建 lambda:
var p = Expression.Parameter(typeof(GLAccount));
var body = Expression.Property(p, propertyInfo);
var lambda = Expression.Lambda<Func<GLAccount, SomeType>>(body, p);
modelBuilder.Entity<GLAccount>().Ignore(lambda);
不过,这里的问题是要知道 SomeType
。我假设Ignore(...)
实际上是Ignore<TResult>(...)
或类似的,其中 TResult
需要与 SomeType
相同上面,这需要是 ExampleProp
的返回类型是。您可能需要使用MakeGenericMethod
在这里。
另请注意,如果您没有使用 propertyInfo
执行任何其他操作 ,您还可以使用Expression.Property(p, "ExampleProp")
作为捷径。
虽然... from these docs ,您也许可以简单地使用:
modelBuilder.Entity<GLAccount>().Ignore("ExampleProp");
关于c# - 使用 PropertyInfo 忽略属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59030906/