使用Subsonic 3,簡單的存儲庫添加總是給我一個00000000-0000-0000-0000-000000000000我的PK,這顯然導致錯誤我的數據庫。我看到Subsonic創建的PK的定義是使用newid(),但仍然存在這個問題。Subsonic 3 Guid作爲PK總是給我00000000-0000-0000-0000-000000000000
其他人有這個問題嗎?
僅供參考我正在使用位於我的App_Data目錄中的本地SQL Server 2005數據庫。
使用Subsonic 3,簡單的存儲庫添加總是給我一個00000000-0000-0000-0000-000000000000我的PK,這顯然導致錯誤我的數據庫。我看到Subsonic創建的PK的定義是使用newid(),但仍然存在這個問題。Subsonic 3 Guid作爲PK總是給我00000000-0000-0000-0000-000000000000
其他人有這個問題嗎?
僅供參考我正在使用位於我的App_Data目錄中的本地SQL Server 2005數據庫。
當您使用Guid的SubSonic期望您設置它們。你最好的選擇是在構造函數中Guid.NewGuid()。請記住,SimpleRepo是「POCO優先」的思想。數據庫只是一個數據的地方。
我也使用GUID作爲PK。我的PK默認設置是...
(CONVERT([uniqueidentifier],CONVERT([binary](6),getdate(),(0))+CONVERT([binary](10),newid(),(0)),(0)))
我已經經歷了亞音速源和我開始認爲這是關係到一個事實,即... SHIZ我不太知道。
我知道Subsonic沒有看到NOT NULL,PK,默認設置列爲READ ONLY。
因此,假設你沒有在溶液中的任何其它數據類型的PK,你可以添加幾行到Structs.tt文件...
查找線路30 foreach循環...
<# foreach(var col in tbl.Columns){#>
Columns.Add(new DatabaseColumn("<#=col.Name#>", this)
{
IsPrimaryKey = <#=col.IsPK.ToString().ToLower()#>,
DataType = DbType.<#=col.DbType.ToString()#>,
IsNullable = <#=col.IsNullable.ToString().ToLower()#>,
AutoIncrement = <#=col.AutoIncrement.ToString().ToLower()#>,
IsForeignKey = <#=col.IsForeignKey.ToString().ToLower()#>
<# if (col.IsPK.ToString().ToLower() == "true"){ #>
, IsReadOnly = <#=col.IsPK.ToString().ToLower()#>
<# } #>
});
您要添加的部分是緊跟在IsForeignKey之後的IF語句。
只要你有一些默認設置,這應該使它適用於你的PK Guids。
我不能對任何其他PK你可能在數據庫中有任何保證。你已經警告過。
問題是,我的假設是,如果我使用int來表示我的PK,並在我使用Add時將其取回,那麼GUID – Slee 2009-10-26 01:19:35