我有一个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语句会更容易:(