我正在尝试一次将数据保存在10个实体表中。出于这个原因,我正在加载相关实体对象中的数据并将其保存到最后。我试图通过
检查数据库中是否存在记录var bankContacts = entity.BankContacts.Where(bc => bc.Bank.Equals(bankObj)).FirstOrDefault();
但是我收到以下错误:'在此上下文中仅支持原始类型或枚举类型。' 我没有Bank.BankID的值可以使用
var bankContacts = entity.BankContacts.Where(bc => bc.BankID == bankObj.BankID).FirstOrDefault();
答案 0 :(得分:2)
这一行...
var bankContacts = entity.BankContacts.Where(bc => bc.Bank.Equals(bankObj)).FirstOrDefault();
...正在将两个银行对象与.Equals
进行比较,EF并不知道如何将其转换为查询表达式。记住EF不会运行像linq这样的方法,但会将它们转换为SQL查询以进行操作。您需要以另一种方式比较它们,例如bc.Bank.Id ==
等。如果您需要确保所有值都相等,那么您可以为EF编写自定义比较器或只添加多个.where
子句或多个{{1运算符来测试它们。
答案 1 :(得分:0)
'此上下文仅支持原始类型或枚举类型' 这意味着只支持转换为int的内置数据类型或枚举类型。
EF不知道如何将您的查询转换为SQL语句以针对您的数据库运行它。