使用由Id组成的复合键和使用Nhibernate的外键插入值

时间:2015-12-04 14:24:35

标签: sql-server-2008 c#-4.0 nhibernate fluent-nhibernate-mapping

所以,我想要实现的目标如下:

我有一个名为OrderVersion的类。 Id基本上是版本号,OrderId有一个外键。我将这些映射为复合键,因为我需要Id和OrderId对是唯一的。但是,因为我需要为每个订单增加版本,例如:

订单1 =>版本1,版本2,版本3

订单1 =>版本1,版本2,版本3

这是目前正在使用的映射。

internal class VersionsMap : ClassMap<DataOrders.Version>
{
    public VersionsMap()
    {
        Table("tblOrderVersion");

        CompositeId()
            .KeyProperty(x => x.Id, x => x.ColumnName("Id"))
            .KeyReference(x => x.Order, "OrderId");

        Map(x => x.Values)
            .Column("[Values]")
            .CustomType(typeof(XmlType<List<DataOrders.OrderChange>>));

        Component(x => x.Created, c => {
            c.Map(z => z.By, "CreatedBy")
                .Length(150)
                .Nullable();

            c.Map(z => z.On, "CreatedOn")
                .Nullable();
        });
    }
}

我可以使用复合键实现此目的,还是应该废弃它,只需在Id和OrderId组合上设置唯一约束,而不使用主键?

0 个答案:

没有答案