ConfORM Nhibernate OneToManyKeyColumn应用程序问题
我正在我的一个MVC项目中使用ConfORM Nhibernate。并且在一对多映射方面存在问题ConfORM Nhibernate OneToManyKeyColumn应用程序问题,nhibernate,c#-4.0,conform,Nhibernate,C# 4.0,Conform,我正在我的一个MVC项目中使用ConfORM Nhibernate。并且在一对多映射方面存在问题 IEnumerable<Type> domainEntities = this.GetDomainEntities(); var relationalMapper = new ObjectRelationalMapper(); relationalMapper.TablePerConcreteClass(domainEntities);
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);
和用户:
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; }
}
公共类用户:BaseEntity
{
公共用户()
{
this.Orders=new HashedSet();
}
公共虚拟字符串FirstName{get;set;}
公共虚拟ISet命令{get;protected set;}
}
我希望数据库中有这样的关系:Orders.UserId->User.Id。但当Nhibernate生成DB时,我们遇到了这个问题(见图):
UPS。双重引用用户和用户ID突然出现。当我们删除[user]Nhivernate时,它不能做内部连接这个表。不幸的是,两倍的时间:
无效的列名“User”。
无效的列名“User”
我认为设置ConfORM存在一些问题。
如果我删除mapper.patternsappiers.Merge(新的OneToManyKeyColumnApplier(relationalMapper));
ConfORM generete just[用户]参考键
有人知道这里有什么问题吗?
提前感谢。您需要添加以下应用程序
mapper.PatternsAppliers.Merge(new ManyToOneColumnApplier());
这可能是因为列名从用户端更改了,但从订单端没有更改
mapper.PatternsAppliers.Merge(new ManyToOneColumnApplier());