Nhibernate 映射二进制(16)类型的主键

Nhibernate 映射二进制(16)类型的主键,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我有一个遗留模式,其中包含具有组合键的表,其中一些键的类型为binary16,这是其他列的MD5散列。我很难找到正确的方法来绘制这个结构。我尝试的第一件事就是简单地使用byte[]作为我的域类型,NHibernate很快就放弃了它,因为byte[]没有实现Equals duh!。我尝试的下一件事是创建一个自定义用户类型,即实现IUserType来包装字节[],并提供必要的Equals实现,但由于NHibernate v2.1.2似乎不支持复合键中的用户类型,因此这没有起作用。我最后一次尝试使用G

我有一个遗留模式,其中包含具有组合键的表,其中一些键的类型为binary16,这是其他列的MD5散列。我很难找到正确的方法来绘制这个结构。我尝试的第一件事就是简单地使用byte[]作为我的域类型,NHibernate很快就放弃了它,因为byte[]没有实现Equals duh!。我尝试的下一件事是创建一个自定义用户类型,即实现IUserType来包装字节[],并提供必要的Equals实现,但由于NHibernate v2.1.2似乎不支持复合键中的用户类型,因此这没有起作用。我最后一次尝试使用Guid作为我的域类型,希望NHibernate能够在我的域类型uniqueidentifier和我的列类型binary16之间自动转换或转换;事实并非如此。我目前正在寻找一种方法,强制NHibernate将列c的所有用法包装在CONVERTuniqueidentifier c中。这是可能的还是有其他方法可以实现这一点?

我不知道nhibernate,但我认为这确实是一个SQL问题


您无法在表上创建视图并添加新的索引字段的原因是什么?我假设这里使用ms sql或类似的方法来强制转换二进制16或uniqueidentifier或nvarchar?

这是一个有趣的解决方案,但不适用于我的情况,因为此模式部署在许多客户位置。我真的需要一个能按原样使用模式的解决方案。