2016-07-05 13 views
1

ServiceStackで(SQL Server 2014に対して)下位クラスのオブジェクトを使用して「挿入」機能を使用しようとすると、0を挿入しようとします(ContactIdプロパティ)をContactIdの代わりに使用することができます。 ContactIdはIDENTITY NOT NULLです。 ContactIdはクラスタ化インデックスですが、GlobalContactIdは非クラスタ化プライマリキーです。PK以外のフィールドのServiceStack ID - 挿入に失敗しました

[Alias("Contact")] 
[Schema("Customer")] 
public partial class Contact 
{ 
    [PrimaryKey] 
    public Guid GlobalContactId { get; set; } 
    [AutoIncrement] 
    public int ContactId { get; set;} 
    ... 

私はこれをやっている理由:

  1. それ分散アプリケーションだし、携帯電話のホームに必要 - それゆえGUID
  2. それは古いデータのインポートと、ユーザーが参照するために、その方が簡単です(少なくとも特定の場所で)GUIDよりもむしろintであり、彼らはその前進を続けることを望んでいるでしょう。
  3. パフォーマンス上の理由から、データが電話ではない他のテーブルへのFKとしてContactIdを使用しています

プロパティーに[AutoIncrement]があり、値がそのタイプのデフォルト値と一致すると、値が設定されていないと考えられます。

編集今私はPKとアイデンティティの両方としてContactIdを使用してに戻す、と[AutoIncrement]属性が自動を指定するためのものですOrmLiteで

+0

可能重複http://stackoverflow.com/questions/19277431/servicestack-ormlite-cannot-update-identity-column – Oleg

+0

重複していません。その質問は、私がどのように対処するのか知っている自動増分を持っているテーブルのPKに関するものでした。この場合、IDフィールドは主キーではありません。 –

+0

これはおそらく助けることができます。 http://techfunda.com/howto/121/auto-increment-property-in-model –

答えて

2

独自のチェック制約でUNIQUEIDENTIFIERを追加しているために

プライマリキーをインクリメントする。したがって、プライマリキー以外の列には使用できません。

関連する問題