gpt4 book ai didi

NHibernate + 无法将值 NULL 插入

转载 作者:行者123 更新时间:2023-12-02 05:19:35 24 4
gpt4 key购买 nike

我有一个 MS-SQL 数据库,其中有一个用这段代码创建的表

CREATE TABLE [dbo].[portfoliomanager](
[idPortfolioManager] [int] NOT NULL PRIMARY KEY IDENTITY,
[name] [varchar](45) NULL
)

所以 idPortfolioManager 是我的主键,也是自动递增的。现在在我的 Windows WPF 应用程序上,我使用 NHibernate 来帮助添加/更新/删除/等。来自数据库的数据。这是应该连接到 portfoliomanager 表的类

namespace PortfolioManager
{
[Class(Table="portfoliomanager",NameType=typeof(PortfolioManagerClass))]
public class PortfolioManagerClass {

[Id(Name = "idPortfolioManager")]
[Generator(1, Class = "identity")]
public virtual int idPortfolioManager { get; set; }

[NHibernate.Mapping.Attributes.Property(Name = "name")]
public virtual string name { get; set; }

public PortfolioManagerClass() {
}
}
}

和一些简短的代码来尝试插入一些东西

PortfolioManagerClass portfolio = new PortfolioManagerClass();
Portfolio.name = "Brad's Portfolios";

问题是,当我尝试运行它时,出现了这个错误:

{System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'idPortfolioManager', table 'PortfolioManagementSystem.dbo.portfoliomanager'; column does not allow nulls. INSERT fails. The statement has been terminated...

有一个外部异常(exception)

{"could not insert: [PortfolioManager.PortfolioManagerClass][SQL: INSERT INTO portfoliomanager (name) VALUES (?); select SCOPE_IDENTITY()]"}

我希望这是我必须用 NHibernate 解决的最后一个错误,只是为了让它做一些事情,这是一个漫长的过程。请注意,我也尝试过使用相同的错误设置 Class="native"和 unsaved-value="0"。谢谢!

编辑:

好的,从 Generator 中删除 1,实际上允许程序运行(不确定为什么甚至在我正在查看的示例中也是如此)但它实际上并没有被添加到数据库中。我登录到服务器并运行 sql server profiler 工具,但我从未看到连接通过或它试图运行的 SQL,但 NHibernate 不再抛出错误。开始认为自己编写 SQL 语句会更容易:(

最佳答案

仅供引用,您应该看看 Fluent NHibernate .它将大大减少您在实现大多数 NHibernate 映射时遇到的麻烦。

关于NHibernate + 无法将值 NULL 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2149769/

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