作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个相当简单的情况,其中 EF Core 实体包含一个我们映射到字符串的值对象:
builder.Property(_ => _.Nummer)
.HasConversion(i => i.ToString(), i => ZijdeNummer.FromString(i))
.IsRequired().HasMaxLength(9);
这适用于检索和存储,但对于过滤,我们正在寻找一种按子字符串过滤行的方法。如果它是一个正常的 string
列你可以简单地做这样的事情:
dbSet.TheTable.Where(t => t.Nummer.Contains("some text")).ToList()
显然是自定义 ZijdeNummer
不包含可识别的 .Contains()
方法。我试过使用 .ToString().Contains()
但是,唉,这也行不通。
最后,我还尝试访问该列,就好像它是影子属性一样:
dbSet.TheTable.Where(t => EF.Property<string>(t, "Nummer").Contains("some text"))
但它不会被愚弄,因为它仍然知道 EF.Property<T>(t, "Nummer")
实际上不是一个字符串:(
有没有办法让 EF-Core 只查询原始列类型?
最佳答案
事实证明这比您预期的要容易得多。只需将类型转换为字符串(如果不存在转换,则首先转换为对象)并执行比较:
dbSet.TheTable.Where(t => ((string)(object)t.Nummer).Contains("some text")).ToList()
关于entity-framework-core - 使用值转换器时如何查询 Entity Framework 核心中的实际值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71704235/
我是一名优秀的程序员,十分优秀!