c# - Entity Framework Core:通用模型配置
问题描述
在 EF Core 中配置我的模型映射时,我想设置一些通用映射规则,例如。告诉每个具有Id
属性的类,该属性被映射到 DB 列ID
。
使用实体框架,我能够使用以下代码实现这一点:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Types<IEntity<long>>().Configure(c =>
{
c.Property(x => x.Id).HasColumnName("ID");
});
}
(IEntity<long>
是一个只有一个属性的简单接口long Id { get; set; }
。我模型中的每个实体类都简单地实现了这个接口。)
Entity Framework Core 2.2+也有类似的可能吗?
解决方案
最后,我最终得到了这个解决方案:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
foreach (IMutableEntityType mutableEntityType in modelBuilder.Model.GetEntityTypes())
{
bool isEntity = mutableEntityType.ClrType.GetInterface($"{nameof(IEntity<int>)}`1") != null;
if (isEntity)
{
modelBuilder.Entity(mutableEntityType.ClrType).Property(nameof(IEntity<int>.Id)).HasColumnName("ID");
}
}
}
推荐阅读
- php - $_POST 不更新值
- c# - 如何在 Entity Framework Core 中从不同的上下文中选择插入数据
- python-3.x - 我们如何在 python 中使用没有硒的 ChromeDriver、IEDriver、GeckoDriver?
- python - Python中带有/或线程安全队列的公平信号量
- asp.net-mvc - 无法显示来自 MVC 视图文件的图像
- java - 我正在创建 Android 布局,但在我的真实设备上运行后,我得到了相同布局的独特视图
- java - 使用 java 在 docker 容器中运行 Cucumber 测试
- c# - 为什么相同的 php UnityWebRequest 在 plesk 服务器上不起作用,但在我的本地主机上起作用?
- java - 是否有具有拆分和限制的随机数生成器?
- google-chrome - 默认全屏打开谷歌浏览器