c# - 在实体接口(interface) (EF Core) 中声明要忽略的属性

标签 c# .net .net-core entity-framework-core

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/

相关文章:

linux - 如何在 Debian Jessie 中安装 dotnet core sdk

c# - SetWindowsHookEx() 只注册一个本地钩子(Hook),而 DLL 被注入(inject)

c# - SQL 查询正在复制行并在我的聚合函数中使用这些行

c# - HttpRequestException - 1&1 Ionos 计划上的 SendGrid 电子邮件 API v3 集成

c# - C# 中的 X509 指南/教程

.NET 内存模型、 volatile 变量和测试设置 : what is guaranteed?

c# - 混合 web api 操作和非 api 操作相同的 Controller asp.net 核心

c# - 重写 .NET 基类库中的现有功能

c# - xp 的 Win32_MountPoint 替代品

c# - 创建相册查看器