C#プロジェクトでEF4を使用しています。私が直面している問題は、レコードを保存しようとすると、主キー違反が発生し、PK値が「0000-0000-0000-xxx」になることです。私の推測では、EFはIsIdentityフラグを認識せず、GUID値を生成しません。テーブルのSQLServerデータベースで、PK(uniqueidentifier> guid)を指定し、それをIdentityColumnとして設定します。したがって、GUIDはSQL Serverで生成されるため、これがプロジェクト自体に伝わると予想されます。このバグを克服する方法はありますか?
2818 次
2 に答える
10
Guid
EFモデルでIDをIDとして指定する必要があります。EF 4.1の場合:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
(Guid
IDとは対照的に、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 に答える