通过加载内存中的所有内容只保存一次

时间:2018-04-03 16:13:23

标签: c# entity-framework

我正在尝试一次将数据保存在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();

我该如何解决这个问题? 当前的银行对象是: enter image description here

2 个答案:

答案 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语句以针对您的数据库运行它。