Игра с проектом Fluent NHibernate Getting Started . Я попытался немного изменить пример, по нескольким причинам, среди которых исключение циклической ссылки для сериализации json.
Что я сделал, так это убрал классы Store
и StoreMap
своих ссылок обратно на классы Employee
и Product
. Теперь это выглядит так:
Магазин / StoreMap
public class Store
{
public virtual int Id { get; private set; }
public virtual string Name { get; set; }
}
public StoreMap()
{
Id(x => x.Id);
Map(x => x.Name);
}
Служащий / EmployeeMap
public class Employee
{
public virtual int Id { get; private set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual Store Store { get; set; }
}
public class EmployeeMap : ClassMap<Employee>
{
public EmployeeMap()
{
Id(x => x.Id);
Map(x => x.FirstName);
Map(x => x.LastName);
References(x => x.Store).Cascade.All();
}
}
Продукт / ProductMap
public class Product
{
public virtual int Id { get; private set; }
public virtual string Name { get; set; }
public virtual double Price { get; set; }
public virtual IList<Store> StoresStockedIn { get; private set; }
public Product()
{
StoresStockedIn = new List<Store>();
}
public virtual void StockAt(Store store)
{
StoresStockedIn.Add(store);
}
}
public class ProductMap : ClassMap<Product>
{
public ProductMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Price);
HasManyToMany(x => x.StoresStockedIn)
.Cascade.All()
.Table("StoreProduct");
}
}
Я переместил операции "Каскад" в Product
и Employee
вместо Store
. Судя по результатам тестирования, ассоциации HasMany и HasManyToMany работают нормально.
Мой вопрос: правильный ли это подход? Приведет ли это к чему-то, чего я не ожидал.