У меня проблемы с использованием провайдера sqlite для написания интеграционных тестов.
Если я присоединяю дерево сущностей к моему DbContext, у меня нарушаются отношения (работает то же самое с провайдером SqlServer).
См. Пример для получения дополнительной информации.
Для точности, PK трех таблиц - Id + TenantId.TenantId устанавливается только в методе SaveChangesAsync, в зависимости от подключенного пользователя.
Если я хочу, чтобы он работал на sqlite, я должен установить TenantId для 3 объектов, прежде чем присоединять их к контексту ... Почемуэто отличается от поставщика SQL Server?
public class Store {
public int Id { get; set; }
public int TenantId { get; set; }
public List<Product> Products { get; set; }
}
public class Product {
public int Id { get; set; }
public int TenantId { get; set; }
public Store Store { get; set; }
public int StoreId { get; set; }
public Category Category { get; set; }
public int CategoryId { get; set; }
}
public class Category {
public int Id { get; set; }
public int TenantId { get; set; }
public List<Product> Products { get; set; }
}
[Test]
public void Test_Create(){
var store = new Store();
store.Products = new List<Product>();
var product = new Product();
product.Category = new Category();
store.Products.Add(product);
dbContext.Stores.Add(store);
// fails, product is detached from the Store after attaching to DbContext
Assert.Single(store.Products);
}