gpt4 book ai didi

NHibernate SchemaExport : How to generate a meaningful unique key name?

转载 作者:行者123 更新时间:2023-12-04 20:23:30 25 4
gpt4 key购买 nike

当我将SchemaExport与SQL Server 2005一起使用时,它会生成唯一的键名,例如:

UQ__员 worker 数__03317E3D

如何生成类似UQ__Employees__Name的名称?
即使在SQL Server中!

最佳答案

我认为有两种方法可以做您想做的事情。

第一个是在映射文件中指定名称。我知道它适用于外键,尽管我还没有尝试过使用唯一键。

<property name="KeyId" column="KeyId" type="Int" unique="true" unique-key="MyKeyName"/>

在NHibernate中,您可以通过创建实现 NHibernate.Cfg.INamingStrategy的类并在配置nhibernate时添加该类来更改命名策略。
ISessionFactory sf = new Configuration()  
.SetNamingStrategy(new YourNamingStrategy())
.Configure()
.SchemaExport(true, false);

这也是nhibernate内置的改进的NamingStrategy。不记得它输出的是什么,但值得一试
ISessionFactory sf = new Configuration()
.SetNamingStrategy(ImprovedNamingStrategy.Instance)
.Configure()
.SchemaExport(true, false);

编辑
我发现了其他两种可能性
第一个涉及属性标签。有一个列标记,其中包含许多可能有用的属性。
<property name=KeyID>
<column name="KeyId" unique-key="MyKeyName"/>
</property>

另一个涉及更多
您可以添加类似这样的内容
<database-object >
<create>
create table MyTable(
Id UNIQUEIDENTIFIER not null,
Name NVARCHAR(10) not null,
RowVersion INT not null,

primary key (Id)
)

ALTER TABLE dbo.MyTable ADD
CONSTRAINT IX_Table_1 UNIQUE NONCLUSTERED(Name)
WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
</create>
<drop></drop>
</database-object>

或创建一个实现 NHibernate.Mapping.IAuxiliaryDatabaseObject的类,该类将创建DDL语句。
看看 NHiberate manual on nhibernate.info并向下滚动到

5.6. Auxiliary Database Objects



这说明了您需要执行的操作。

关于NHibernate SchemaExport : How to generate a meaningful unique key name?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3632386/

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