首先使用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数据库它完美的工作。