Не удалось сохранить или принять изменения, поскольку несколько объектов типа «xxxxxxx.DbMember» имеют одинаковое значение первичного ключа - PullRequest
0 голосов
/ 14 февраля 2019

При попытке добавить новый объект в один из наборов DbSets я получаю следующее исключение:

Не удалось сохранить или принять изменения, поскольку несколько объектов типа 'xxxxxxx.DbMember' имеют одинаковыезначение первичного ключа.

Проблема возникает из-за того, что у меня есть некоторые пользовательские сопоставления между сущностями EF и моими сущностями BL.Вот фрагмент кода:

public partial class DbMember
{
    //Member Properties
}

public partial class User
{

}

public partial class DbMember
{
    public static implicit operator DbMember(User user)
    {
        var member = new DbMember();
        //Map values
        return member;
    }

    public static explicit operator User(DbMember member)
    {
        User user = new User();
        return user;
    }
}

public class UserService
{
    public User GetUser(string userName){ //returns dbMember object }
}

public class AnotherService
{
    public void Add(string userName,string desc)
    {
        var user = new UserService(_context).GetUser(userName);
        var qb = new SomeOtherObject
        { 
            User =  user, Desc = desc
        };
        _dbSetOtherObject.Add(qb);  
        _context.DbMembers.Attach(qb.User);
        _context.SaveChanges();
    }
}

Есть предложения, в которых я могу ошибаться?

...