У меня возникли проблемы с добавлением объекта в базу данных, который содержит отношение к существующему объекту. Я много искал и не мог найти подходящего решения для этого. Я опишу это настолько просто, насколько смогу.
public class Store : IEntity
{
public int StoreId { get; set; }
public string StoreName { get; set; }
public virtual Address Address { get; set; }
public virtual Contractor Contractor { get; set; }
}
public class Product : IEntity
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public decimal Price { get; set; }
public virtual Store Store { get; set; }
}
И в репозиторий я добавляю такие записи. Это общий класс
public TEntity Add(TEntity entity)
{
using (var context = new TContext())
{
var addedEntity = context.Entry(entity);
addedEntity.State = EntityState.Added;
context.SaveChanges();
return entity;
}
}
Теперь, когда я пытаюсь добавить новую запись, подобную этой
var store = storeManager.GetBy(x => x.StoreId == 1);
var product = new Product() { ProductName = "Bananas", Store = store };
productManager.Add(product);
productManager.GetAll().ForEach(x => Console.WriteLine(x.ProductName + " " + x.Store.StoreId));
Отношение к магазину добавляется как новый магазин и получает новый идентификатор. Кто-нибудь знает, как я могу это решить?
Пример из базы данных:
StoreId StoreName Address_AddressId Contractor_ContractorId
1 NULL 1 1
2 NULL 2 2
3 NULL 3 3
4 NULL 4 4
5 NULL 5 5
6 NULL 6 6
7 NULL 7 7
Это мой первый вопрос о stackoverflow.