我们可以阻止 ID 列自动递增吗?

发布于 2024-08-17 23:20:26 字数 617 浏览 3 评论 0原文

我有一个以主列作为 ID 的表。但该列不是标识列。所有值均明确提供。

下面是我的映射类

 public ObjectTypeMap()
    {
        Table("OBJECTTYPE");
        Id(x => x.ObjectTypeId);
        Map(x => x.Title).Not.Nullable();
        Map(x => x.Description);
    }

,但是当我尝试使用 session.save 保存此对象时,出现错误,提示

“无法将 NULL 值插入到表“DiscoveryWEBTest.dbo.ObjectType”列“ObjectTypeId”中;列不允许为空值。 INSERT 失败。\r\n该语句已终止。”

但在我的对象中,我提供了 ObjectTypeId 的值。

问题是 Fluent NHibernate 将 ID 映射视为自动增量列,但在数据库中 ObjectTypeId 不是标识列,这就是 insert 语句没有获取任何值并抛出 null 错误的原因。

有没有一种方法可以告诉我该列是 ID 列,但它的值不是自动递增的?

提前致谢

I have a table with primary column as an ID. But that column is not an identity column. All the values are provided explicitly.

Below is my mapping class

 public ObjectTypeMap()
    {
        Table("OBJECTTYPE");
        Id(x => x.ObjectTypeId);
        Map(x => x.Title).Not.Nullable();
        Map(x => x.Description);
    }

but when I try to save this object using session.save, I get an error saying

"Cannot insert the value NULL into column 'ObjectTypeId', table 'DiscoveryWEBTest.dbo.ObjectType'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated."

But in my object I am providing the value of ObjectTypeId.

The problem is Fluent NHibernate considers ID mapping as auto-increment column, but in the database ObjectTypeId is not an identity column thats why the insert statement do not get any value and throws null error.

Is there a way with which I can tell the the column is an ID column but its value is not auto-incremented?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

染柒℉ 2024-08-24 23:20:26

像这样映射它:

Id(x => x.ObjectTypeId).GeneratedBy.Assigned();

Map it like this:

Id(x => x.ObjectTypeId).GeneratedBy.Assigned();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文