39

私はこのクラスとテーブルを持っています:

public class Foo
{
public Guid Id {get;set;}
public string Name {get;set;}   
}

create table Foo
(
id uniqueidentifier primary KEY DEFAULT (newsequentialid()),
name nvarchar(255)
)

問題は、新しい foo を保存しようとすると、最初の foo が 0000-000-00 ... id になり、2 番目も id になるため、制約例外が発生することです

誰かが修正を知っていますか?

4

2 に答える 2

71

Identity StoreGeneratedPattern を設定しましたか?
メソッドでそれを行うことができますOnModelCreating

modelBuilder.Entity<Foo>().Property(o => o.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

または DataAnnotation 属性を使用します。

public class Foo {
  [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  public Guid Id {get;set;}
  public string Name {get;set;}
}
于 2011-03-11T08:53:45.163 に答える
17

Devartのソリューションに基づいて構築しただけで、この問題が発生し、

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]

データ注釈が機能しませんでした。この理由は、ID として Guid をサポートしていない SqlServerCompact データベースを (コードの最初のチュートリアルの 1 つで提案されているように) 使用していたためです。他の誰かがこの問題を抱えている場合に備えて、ここに投稿すると思いました。Compact データベースの代わりに SqlServer mdf を作成するように接続文字列を変更すると、完全に機能します。

于 2012-02-20T16:10:32.370 に答える