我有與此代碼的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...
與
外例外3210{"could not insert: [PortfolioManager.PortfolioManagerClass][SQL: INSERT INTO portfoliomanager (name) VALUES (?); select SCOPE_IDENTITY()]"}
我希望這是我必須用NHibernate解決的最後一個錯誤,只是爲了讓它做些事情,這是一個漫長的過程。就像一個筆記一樣,我也試着用相同的錯誤設置Class =「native」和unsaved-value =「0」。謝謝!
編輯:
好取出1,從發電機實際上允許程序運行(不知道爲什麼,這是連樣品,我看着),但它實際上並沒有被添加到數據庫中。我登錄到服務器並運行sql server profiler工具,我從來沒有看到連接通過或試圖運行的SQL,但NHibernate不再拋出錯誤。開始認爲這會更容易只寫SQL語句自己:(
使用Nhibernate和Fluent NHibernate 8個月後,我得出了同樣的結論NH非常適合從數據庫中進行選擇,但在保存或刪除時很頭痛,我不會花太多時間去嘗試調試錯誤,只需編寫一個SQL語句。 – modernzombie 2011-06-09 13:14:00