当NHibernate使用FluentNHibernate生成我的列名时,如何逃避关键字冲突?
NHibernate为我生成了这个,而“Key”是一个冲突。
create table Setting (
Key NVARCHAR(MAX) not null,
Value NVARCHAR(MAX) null,
primary key (Key)
)
答案 0 :(得分:1)
我有类似的问题。修复方法是使用FluentNHibernate的Column属性部分为键属性的列名括起来。
这是一个有问题的Key属性的实体:
public class MyEntity
{
public virtual int Id { get; set; }
public virtual string Key { get; set; }
}
以下是如何在映射中指定列名:
public class MyEntityMap : ClassMap<MyEntity>
{
public MyEntityMap()
{
Id(x => x.Id).GeneratedBy.Assigned();
// Note the brackets around Key
Map(x => x.Key).Column("[Key]").Not.Nullable();
}
}
答案 1 :(得分:0)
试试这个:
create table Setting (
[Key] NVARCHAR(MAX) not null,
Value NVARCHAR(MAX) null,
primary key (Key)
)
SQL Server允许您通过在文本周围放置方括号来转义保留字。