Клиент моего класса:
public class Client : Entity
{
public Client()
{
ListClientObjectX = new List<ClientObjectX>();
}
public virtual IList<ClientObjectX> ListClientObjectX { get; set; }
...
}
Мой класс ClientObjectX
public class ClientObjectX: Entity
{
public ClientObjectX()
{
Client = new Client();
ObjectX = new ObjectX();
}
public virtual Client Client { get; set; }
public virtual ObjectX ObjectX { get; set; }
public virtual string Name {get; set;}
...
}
Моя таблица ClientObjectX имеет уникальный индекс с двумя столбцами (ClientID и ObjectXID): idxClientObjectX
Отображение клиента (свободно):
public class ClientMap : ClassMap<Client>
{
public ClientMap()
{
Table("tblClient");
Id(x => x.ID,"ClientID").GeneratedBy.Identity().UnsavedValue(0);
HasMany<ClientObjectX>(x => x.ListClientObjectX)
.Inverse()
.Cascade.AllDeleteOrphan()
.KeyColumns.Add("ClientID");
}
}
Так, например, при загрузке клиента, который имеет в ListClientObjectX один объект:
var client = new Repository<Client>().Load(2);
И удалил из ListClientObjectX этот объект:
client.ListClientObjectX.RemoveAt(0);
Пока нет сохранения / подтверждения. Теперь я добавляю объект в ListClientObjectX с тем же ClientID и ObjectXID:
client.ListClientObjectX.Add(test);
Когда я сохраняю это, я получаю ошибку:
repCliente.SaveOrUpdate(client);
Невозможно вставить строку повторяющегося ключа в объект 'dbo.tblClientObjectX' с уникальным индексом 'idxClientObjectX'.
Заявление было прекращено.
Зачем получать эту ошибку? Как я могу это исправить?
Спасибо