玩弄流利NHibernate的Getting Started項目。我試着自定義這個例子,原因有幾個,其中包括消除了json序列化的循環引用。NHibernate單向關聯
我所做的是將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");
}
}
我已將「Cascade」操作移至Product
和Employee
而不是Store
。從我做的測試中,HasMany和HasManyToMany協會似乎都能正常工作。
我的問題是,如果這是正確的做法。是否會導致我沒有預料到的事情。