gpt4 book ai didi

nhibernate - ConfORM Nhibernate OneToManyKeyColumnApplier 问题

转载 作者:行者123 更新时间:2023-12-02 15:36:53 26 4
gpt4 key购买 nike

我在我的一个 MVC 项目中使用 ConfORM Nhibernate。并且有一对多映射的问题。

        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 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 -> User.Id 。但是当 Nhibernate 生成数据库时,我们遇到了这个问题(见图):

table structure

UPS。双引用User和UserId突然出现。当我们删除[用户]时,Nhivernate 无法对该表进行内部连接。双重时间令人悲伤:列名“用户”无效。列名“用户”无效。

我认为设置 ConfORM 存在一些问题。如果我删除 mapper.PatternsAppliers.Merge(new OneToManyKeyColumnApplier(relationalMapper));ConfORM 生成的只是 [User] 引用 key 。

有人知道这里出了什么问题吗?提前致谢。

最佳答案

您需要添加以下应用程序

mapper.PatternsAppliers.Merge(new ManyToOneColumnApplier());

可能是因为列名称已从用户端更改,但从订单端未更改。

关于nhibernate - ConfORM Nhibernate OneToManyKeyColumnApplier 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4315098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com