实体框架4 - 用户名和电子邮件列的唯一问题

Yar*_*evi 2 .net c# entity-framework unique-constraint entity-framework-4

我的实体模型中有一个User实体:

http://i.stack.imgur.com/QXMYI.jpg

用户名和电子邮件应该是唯一的,但目前EF4不支持此功能.

所以我写了这段代码以确保唯一性:

public void CreateNewUser(string i_UserName, string i_Email)
{
    using (ModelContainer context = new ModelContainer())
    {
        User usr;

        usr = context.UserSet.Where(u => u.Username == i_UserName).SingleOrDefault();
        if (usr != null)
            throw new Exception("Username not unique");

        usr = context.UserSet.Where(u => u.Email == i_Email).SingleOrDefault();
        if (usr != null)
            throw new Exception("Email not unique");

        context.UserSet.AddObject(new User() { Username = i_UserName, Email = i_Email });
        context.SaveChanges();                               
    }
}
Run Code Online (Sandbox Code Playgroud)

如果这是正确的方法,我是否有办法在context.UserSet.AddObject()调用时自动执行此代码?或者确实存在更优雅的方式?

neo*_*pir 5

我不知道更优雅的方式.而不是使用SingleOrDefault,我想你想要的东西:

bool isUniqueUserName = !context.UserSet.Any(u => u.Username == i_UserName); 
Run Code Online (Sandbox Code Playgroud)

为了表现.Any()在第一场比赛时停止,不必枚举整个序列.