Entity Framework6 Code First 不区分大小写的字符串关联
Entity Framework 6 Code First case insensitive string association
我正在将 LINQ to SQL 项目迁移到 EF 6.1.3 Code First。我面临的问题是:
我有 2 个表,Incidents with debtorNo column (varchar(20) not null) 和 Debtors with a No column (varchar(20) not null) 这是主键。架构无法更改,因为这些表是由我无法控制的外部系统填充的。数据库中的表之间没有外键,因为表是异步填充的(同样无法控制)。数据库排序规则不区分大小写。
在 LINQ to SQL 中,我声明了导航表之间的关联。在 EF 中,我在 DbContext 的 OnModelCreating 方法中用以下代码声明了相同的关联:
modelBuilder.Entity<Incident>()
.HasRequired(e => e.Debtor)
.WithMany(e => e.Incidents)
.HasForeignKey(e => e.DebtorNo);
虽然 LINQ to SQL 关联不区分大小写,但 EF 关联不是。谷歌搜索问题后,我找到了 2 个解决方案:
- 创建和使用将字符串转换为大写或小写的视图。
- 处理数据
这些解决方案非常有效(我可能会使用第二个),但已过时并参考了 EF 4.1 Code First。
所以我的问题是有没有办法在最新版本的 EF Code First 中声明不区分大小写的字符串关联?
我们使用的是 EF 6.1,据我所知,没有办法做到这一点。我认为您仍然需要使用您列出的方法之一。
FWIW 我们正在使用视图在数据库级别进行转换(例如字符串到日期)
我正在将 LINQ to SQL 项目迁移到 EF 6.1.3 Code First。我面临的问题是:
我有 2 个表,Incidents with debtorNo column (varchar(20) not null) 和 Debtors with a No column (varchar(20) not null) 这是主键。架构无法更改,因为这些表是由我无法控制的外部系统填充的。数据库中的表之间没有外键,因为表是异步填充的(同样无法控制)。数据库排序规则不区分大小写。
在 LINQ to SQL 中,我声明了导航表之间的关联。在 EF 中,我在 DbContext 的 OnModelCreating 方法中用以下代码声明了相同的关联:
modelBuilder.Entity<Incident>()
.HasRequired(e => e.Debtor)
.WithMany(e => e.Incidents)
.HasForeignKey(e => e.DebtorNo);
虽然 LINQ to SQL 关联不区分大小写,但 EF 关联不是。谷歌搜索问题后,我找到了 2 个解决方案:
- 创建和使用将字符串转换为大写或小写的视图。
- 处理数据
这些解决方案非常有效(我可能会使用第二个),但已过时并参考了 EF 4.1 Code First。
所以我的问题是有没有办法在最新版本的 EF Code First 中声明不区分大小写的字符串关联?
我们使用的是 EF 6.1,据我所知,没有办法做到这一点。我认为您仍然需要使用您列出的方法之一。
FWIW 我们正在使用视图在数据库级别进行转换(例如字符串到日期)