0
所以我有一个EF代码优先模型属性:Id和前缀(都映射到数据库)和FullId(未映射)定义为数据库侧滤波
FullId => Prefix + "-" + Id.ToString("D4")
在C#模型中。例如FullId是
ABC-0045或XER-0001
现在我需要在数据库这个 FullId字段进行筛选,即
db.Entity.Where(x=>x.FullId.Contains(search))
但搜索不只是ID ,但对于模型中的任何内容(其他列都省略,例如:名称,地址等)。 where谓词是动态构建的。
为了解决这个问题到目前为止,我还认为:
- 物化FullId到数据库(缺点:数据的复制,需要在前缀变为手动更新)
- 制作FullId计算列,但我不知道如何轻松地D4格式SQL(3)
- 不知怎的,使内,其中(的ToString(“D4”)抛出不支持)
- 正则表达式拆分搜索字符串本身(输入)的领域分别搜索这成为可能,很明显因为搜索可能潜在的不理想搜索其他领域 - 现实中模型中有更多可搜索的列。
你认为最好的方法是什么?
是的,这将工作,但正如我在第4)点所述,数据库中有更多的列需要搜索。我编辑了这个问题,使其更加明显。也许没有什么好的方法来做到这一点。 – NeverStopLearning
那么请稍微解释一下你搜索的目的。你想实现全文搜索还是它是什么? – Naduweisstschon
Yeas,搜索变量包含任意数据并且对多列进行搜索。这是一个有点奇怪的用例,同意。我认为,如何解决这个问题真的没有什么好方法。 – NeverStopLearning