我问了一个已回答的MS SQL问题> here<。这是一个后续问题。本质上它是相同的,除了数据库是MySQL而不是MS SQL,LINQ查询的对象是view
而不是表。
我现在的问题是关于MySQL数据库的EF查询。我正在做一个非常相似的查询,但后端是MySQL数据库view
而不是表。我正在尝试使用与MS SQL表完全相同的构造,并具有:
from myView in db.companySessions
where myView.machine.ToUpper().Substring(0,
(int) SqlFunctions.CharIndex(myView.machine, "."))
.Equals(machine.ToUpper().Substring(0,
(int) SqlFunctions.CharIndex(machine.ToUpper(), ".")))
db.companySessions
指向MySQL数据库中的视图。
machine
是传递给该方法并由该方法验证的字符串。我得到了例外:
LINQ to Entities does not recognize the method 'Int32 IndexOf(System.String,
System.StringComparison)' method, and this method cannot be translated into
a store expression.
这是因为我正在进入view
还是到达MySQL?
答案 0 :(得分:1)
我将假设machine
是一个局部变量
var thisMachineName = SomehowGetMachineName().ToUpper().Split('.').First();
所以您不需要在该变量上使用SqlFunctions
:
from myView in db.companySessions
where myView.machine.ToUpper().Substring(0,
(int) SqlFunctions.CharIndex(myView.machine, "."))
.Equals(thisMachineName)