2

C#プロジェクトでEF4を使用しています。私が直面している問題は、レコードを保存しようとすると、主キー違反が発生し、PK値が「0000-0000-0000-xxx」になることです。私の推測では、EFはIsIdentityフラグを認識せず、GUID値を生成しません。テーブルのSQLServerデータベースで、PK(uniqueidentifier> guid)を指定し、それをIdentityColumnとして設定します。したがって、GUIDはSQL Serverで生成されるため、これがプロジェクト自体に伝わると予想されます。このバグを克服する方法はありますか?

4

2 に答える 2

10

GuidEFモデルでIDをIDとして指定する必要があります。EF 4.1の場合:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }

GuidIDとは対照的に、IDはデフォルトではIDではありませんint。)このモデルを使用してデータベースを作成する場合、EFはデフォルト値が。の列を作成しますnewid()

EF 4.0では、モデルデザイナに移動し、デザイナでIdプロパティをマークし、プロパティウィンドウを開いて、に設定StoreGeneratedPatternできIdentityます。

于 2011-08-24T18:55:47.743 に答える
3

これの代わりに:

public System.Guid ID { get; set; }

これを試して:

private System.Guid _id;
public System.Guid ID
{
    get
    {
        if (_id == null || _id == Guid.Empty)
            _id = Guid.NewGuid();
        return _id;
    }
    set
    {
        _id = value;
    }
}
于 2011-08-24T16:51:35.453 に答える