NHibernate +无法将NULL值插入

时间:2010-01-27 19:42:04

标签: nhibernate nhibernate-mapping

我有一个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:无法将值NULL插入   柱       'idPortfolioManager',表'PortfolioManagementSystem.dbo.portfoliomanager';柱       不允许空值。 INSERT失败。该声明已被终止......

外部异常

  

{“无法插入:[PortfolioManager.PortfolioManagerClass] [SQL:   插入        portfoliomanager(name)VALUES(?);选择SCOPE_IDENTITY()]“}

我希望这是我用NHibernate解决的最后一个错误,只是为了让它做某事,这是一个漫长的过程。就像一个注释,我也试过设置Class =“native”和unsaved-value =“0”同样的错误。谢谢!

编辑:

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

1 个答案:

答案 0 :(得分:-1)

仅供参考,你应该看看Fluent NHibernate。它将大大减少实现大多数NHibernate映射时的头痛量。