EF 核心 2.2
有这个界面:
public interface INotPersistingProperties
{
string MyNotPersistingPropertyA { get; set; }
string MyNotPersistingPropertyB { get; set; }
}
还有很多实现接口(interface)的实体
public class MyEntity : INotPersistingProperties
{
public int Id { get; set; }
public string MyNotPersistingPropertyA { get; set; }
public string MyNotPersistingPropertyB { get; set; }
}
对于所有实现 INotPersistingProperties 的实体,是否有机会自动忽略这些属性(使用 Fluent API)?
最佳答案
目前 EF Core 不提供定义自定义约定的方法,但您可以将以下内容添加到您的 OnModelCreating
覆盖(在发现所有实体类型之后)以迭代实现该接口(interface)的所有实体类型和为每个属性调用 Ignore
fluent API:
var propertyNames = typeof(INotPersistingProperties).GetProperties()
.Select(p => p.Name)
.ToList();
var entityTypes = modelBuilder.Model.GetEntityTypes()
.Where(t => typeof(INotPersistingProperties).IsAssignableFrom(t.ClrType));
foreach (var entityType in entityTypes)
{
var entityTypeBuilder = modelBuilder.Entity(entityType.ClrType);
foreach (var propertyName in propertyNames)
entityTypeBuilder.Ignore(propertyName);
}
关于c# - 在实体接口(interface) (EF Core) 中声明要忽略的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52475938/