У меня есть 3 класса:
BasePlace, Hall, HallPlan
.
Отношения:
BasePlace - Hall
: один ко многим.
Hall
- HallPlan
: один ко многим.
Я получаю места (места) из удаленной программы. У меня есть следующий метод для добавления (или обновления) объекта:
public void AddPremieraPlace(IEnumerable<BasePlace> places)
{
if(places != null)
{
foreach (var place in places)
{
//is exist in db
var dbPlace = Database.BasePlaces.FirstOrDefault(p => p.OIDPremiera == place.OIDPremiera);
// if exist update properties and collections
if (dbPlace != null)
{
dbPlace.Name = place.Name
dbPlace.Halls = place.Halls;
}
else
Add(place); // just add new place
Database.SubmitChanges();
}
}
}
Когда место в БД существует, тогда обновления работают не правильно. В Hall
и HallPlan
создается дубликат:
Hall
таблица, например:
OID Name PlaceId OIDPremiera
19 Redisson NULL 1
20 Test 2 NULL 3
21 Test 3 NULL 2
22 Redisson 5 1
23 Test 2 5 3
24 Test 3 5 2
Как правильно обновить?
Спасибо.
Add()
public virtual void Add(TClass entity)
{
Check.Argument.IsNotNull(entity, "entity");
Database.GetTable<TClass>().InsertOnSubmit(entity);
}