DatabaseGeneratedOption.Identity不生成Id

Jon*_*han 9 c# asp.net-mvc entity-framework

首先使用EntityFramework代码,我创建了一个简单的Foo表.这是我的实体:

public class Foo
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public virtual string Id { get; set; }

    public virtual string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是每当我尝试插入一个新行时,我都会得到一个Cannot insert the value NULL into column 'Id'.当我添加DatabaseGenerated属性时,为什么会发生这种情况?删除和重新创建我的表没有区别.

Sla*_*uma 11

stringSQL Server不支持列类型的标识.(你怎么能指望这样的字符串的样子?)得到这个工作,你可以-例如-添加在SQL Server计算列/用户自定义函数,从一个普通的INT标识列格式的字符串-如图所示这里.


Ali*_*ran 7

  1. 你忘记了Key属性.并且不需要使用virtual主键.
  2. 如Slauma所述,您不能使用Identity字符串数据类型.

试试这段代码:

public class Foo
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public virtual string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

  • 可悲的是,这没有区别。 (2认同)