NHibernate命名约定 - 消除关键字冲突

时间:2009-09-29 19:56:37

标签: sql-server nhibernate fluent-nhibernate naming-conventions

当NHibernate使用FluentNHibernate生成我的列名时,如何逃避关键字冲突?

NHibernate为我生成了这个,而“Key”是一个冲突。

create table Setting (
       Key NVARCHAR(MAX) not null,
       Value NVARCHAR(MAX) null,
       primary key (Key)
)

2 个答案:

答案 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允许您通过在文本周围放置方括号来转义保留字。