2010-01-27 87 views
3

我有與此代碼的NHibernate +無法插入NULL值插入

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

使idPortfolioManager是我的主鍵,也自動增加創造了一個表中的MS-SQL數據庫。現在在我的Windows WPF應用程序中,我使用NHibernate來幫助添加/更新/刪除/ etc。來自數據庫的數據。這裏是應該連接到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...

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

外例外3210

我希望這是我必須用NHibernate解決的最後一個錯誤,只是爲了讓它做些事情,這是一個漫長的過程。就像一個筆記一樣,我也試着用相同的錯誤設置Class =「native」和unsaved-value =「0」。謝謝!

編輯:

好取出1,從發電機實際上允許程序運行(不知道爲什麼,這是連樣品,我看着),但它實際上並沒有被添加到數據庫中。我登錄到服務器並運行sql server profiler工具,我從來沒有看到連接通過或試圖運行的SQL,但NHibernate不再拋出錯誤。開始認爲這會更容易只寫SQL語句自己:(

+0

使用Nhibernate和Fluent NHibernate 8個月後,我得出了同樣的結論NH非常適合從數據庫中進行選擇,但在保存或刪除時很頭痛,我不會花太多時間去嘗試調試錯誤,只需編寫一個SQL語句。 – modernzombie 2011-06-09 13:14:00

回答

-1

僅供參考,你應該看看Fluent NHibernate,這將大大降低實施最NHibernate的映射,當你有頭痛的量。

+0

這應該是一個評論,而不是答案。 – 2014-09-29 12:45:40