实体框架对象与子对象保存子对象一次

时间:2015-08-25 17:30:44

标签: c# entity-framework

编辑:在描述中犯了一点错误

我有类User具有类Group

的属性
class User {
    public int Id {get;set;}
    public Group Group {get;set;}
    public string Name {get;set;}
}

class Group {
    public int Id {get; set;}
    [Index(IsUnique = true)]
    public string Name {get;set;}
}

现在我正在创建一个User类列表,其中一些可能包含相同的类Group值

示例数据:

var users = new List<User> {
    new User {
        Name = "user1",
        Group = getGroup("admin2",..moreParams)
    },
    new User {
        Name = "user2",
        Group = getGroup("admin2",..moreParams)
    },
    new User {
        Name = "admin1",
        Group = getGroup("admin2",..moreParams)
    },
    new User {
        Name = "admin2",
        Group = getGroup("admin2",..moreParams)
    },
};

public Group getGroup(params){
    if(_cacheGroups.Any(someRule)){
        return _cacheGroups.First(someRule);
    }else{
        ... loading the correct group
    }
}

如何阻止实体框架多次保存组

目前的异常消息是

  

重复输入&#39;用户&#39;关键字&#39; IX_Name&#39;

1 个答案:

答案 0 :(得分:0)

您正在为每个Group创建User的新实例,其中一些具有相同的Name,这会导致错误(Name具有唯一索引)。您必须为每个不同的Group创建一个实例,然后根据它们分配每个Group的{​​{1}}:

User