2009-07-26 5 views
0

を使用しています。Subsonic 3、Simple Repositoryを使用すると、Addには私のPKのために常に00000000-0000-0000-0000-000000000000が与えられます。私のDB。私はSubsonicによって作成された私のPKの定義がnewid()を使っていますが、まだこの問題があることを知っています。PKとしてのSubsonic 3 Guidはいつも私に00000000-0000-0000-0000-000000000000

他にもこの問題がありますか?

FYI私のApp_DataディレクトリにあるローカルSQL Server 2005 DBを使用しています。

答えて

1

GuidのSubSonicを使用すると、それらを設定する必要があります。あなたの最善の策はコンストラクタのGuid.NewGuid()です。 SimpleRepoは "POCO-first"の考え方であることを忘れないでください。 DBは単なるデータの場所です。

+0

gotcha、私の前提は、私​​が私のPKのためにintを使用して、私が使用するときに戻って取得すると、同じことが起こるでしょうguid – Slee

1

私はPKとしてGUIDも使用しています。私のPKのデフォルト設定では、私は亜音速ソースを通過してきたと私は、これはshizが、私はかなり知らない...という事実に関係していることを考え始めています...

(CONVERT([uniqueidentifier],CONVERT([binary](6),getdate(),(0))+CONVERT([binary](10),newid(),(0)),(0))) 

です。

私は、SubsonicがNOT NULL、PK、デフォルト設定の列にREAD ONLYを表示していないことを知っています。

だから、あなたはStructs.ttファイルに数行を追加することができ、あなたが溶液中で、他のPKのデータ型を持っていないと仮定すると...

ライン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ガイドのために働くはずです。

私はDB内にある可能性のある他のPKの保証はできません。あなたはwarn'dされてきました。

関連する問題