私はConforM NhibernateをMVCプロジェクトの1つで使用しています。そして、1対多マッピングに問題があった。ConforM Nhibernate OneToManyKeyColumnApplier問題
IEnumerable<Type> domainEntities = this.GetDomainEntities();
var relationalMapper = new ObjectRelationalMapper();
relationalMapper.TablePerConcreteClass(domainEntities);
relationalMapper.Patterns.PoidStrategies.Add(new NativePoidPattern());
relationalMapper.Cascade<Category, Product>(Cascade.All);
relationalMapper.ManyToMany<Category, Product>();
relationalMapper.Cascade<Order, Product>(Cascade.Persist);
var mapper = new Mapper(relationalMapper);
var englishInflector = new EnglishInflector();
mapper.PatternsAppliers.Merge(new ClassPluralizedTableApplier(englishInflector));
mapper.PatternsAppliers.Merge(new OneToManyKeyColumnApplier(relationalMapper));
.....
HbmMapping mapping = mapper.CompileMappingFor(domainEntities);
クラスオーダーとユーザー:1人のユーザーには多くのオーダーがあります。
public class Order : BaseEntity
{
public Order(User user)
{
if (user == null)
{
throw new ArgumentNullException("user");
}
this.User = user;
}
protected Order()
{
}
public virtual User User { get; protected set; }
}
やユーザー:
public class User : BaseEntity
{
public User()
{
this.Orders = new HashedSet<Order>();
}
public virtual string FirstName { get; set; }
public virtual ISet<Order> Orders { get; protected set; }
}
私はこのような関係を期待:Orders.UserId - DBで> User.Idを。
UPS:NHibernateのは、DB generetedたときしかし、我々はこの問題を(画像参照)でした。ダブルリファレンスUserとUserIdが突然uppearedしました。そして、私たちが[ユーザー]を削除すると、Nhivernateはこのテーブルを内部結合することはできません。それは二重の時間を悲しんだ: 無効な列名 'ユーザー'。 無効な列名 'User'です。
ConfORMの設定にはいくつかの問題があると思います。 mapper.PatternsAppliers.Mergeを削除した場合(new OneToManyKeyColumnApplier(relationalMapper)); ConforM generete just [User]参照キー。
誰でも問題が何であるか知っていますか? ありがとうございました。列名は、ユーザー側から変更されていますが、受注側から変更されていないので、あなたは、次のプライヤ
mapper.PatternsAppliers.Merge(new ManyToOneColumnApplier());
を追加する必要が