首先使用Guid作为PK与EF4代码

我有这个class级和表格:

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第一个去与0000-000-00 … ID和第二也是,所以我得到约束exception

有谁知道一个修复?

你有没有设置Identity StoreGeneratedPattern?
你可以在OnModelCreating方法中做到这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;} } 

只是build立在Devart的解决scheme,我有这个问题,并使用

 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 

数据注释不起作用。 这是因为我正在使用(如代码第一个教程中的build议)一个SqlServerCompact数据库不支持Guid作为身份。 只是以为我会张贴在这里,以防其他人有这个问题。 如果你改变连接string,所以它正在创build一个SqlServer mdf而不是一个Compact数据库它完美的工作。