在实体框架中测试预先存在的记录的最佳方法是什么?

时间:2013-08-22 15:38:26

标签: c# linq entity-framework

我的MVC项目使用实体框架来处理与数据库的通信。

Web应用程序需要能够在调用SaveChanges方法之前验证用户通过Web表单提供的值在数据库中是否存在。数据库表上的索引可防止重复值。我不想依赖SQL异常来发现新值存在问题。

我所做的是使用Linq语句检索具有提交值的ContactKey属性的任何记录。然后我使用实体的Count属性。如果它返回0,那么我假设新值是唯一的。这是代码片段:

// newKey is the value provided by user
var existing = from c in db.Contacts where c.ContactKey == newKey select c;
if (existing.Count()==0)
{
    isUnique = true;
}

虽然这似乎按预期工作,但我是Linq的新手,我不确定这是否是最佳方式。

我希望得到任何改进的确认或建议。

唐朗廷

1 个答案:

答案 0 :(得分:4)

使用Enumerable.Any

bool ifExist = db.Contacts.Any(r=> r.ContactKey == newKey);