Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我尝试保存新记录或更新现有记录时,EF是否返回0000-0000-0000-xxx作为Guid?_C#_Sql Server_Entity Framework_Identity Column - Fatal编程技术网

C# 当我尝试保存新记录或更新现有记录时,EF是否返回0000-0000-0000-xxx作为Guid?

C# 当我尝试保存新记录或更新现有记录时,EF是否返回0000-0000-0000-xxx作为Guid?,c#,sql-server,entity-framework,identity-column,C#,Sql Server,Entity Framework,Identity Column,我在我的C#项目中使用EF4。我面临的问题是,当我试图保存一条记录时,我得到一个主键冲突,PK值是“0000-0000-0000-xxx”。据我猜测,EF无法识别IsIdentity标志并生成guid值。在我的表的SQL Server数据库中,我指定了一个PK(uniqueidentifier>guid),并将其设置为IdentityColumn,因此我希望它能够以这种方式传递到我的项目中,因为guid是在SQL Server中生成的。有没有办法克服这个错误?而不是: public System

我在我的C#项目中使用EF4。我面临的问题是,当我试图保存一条记录时,我得到一个主键冲突,PK值是“0000-0000-0000-xxx”。据我猜测,EF无法识别IsIdentity标志并生成guid值。在我的表的SQL Server数据库中,我指定了一个PK(uniqueidentifier>guid),并将其设置为IdentityColumn,因此我希望它能够以这种方式传递到我的项目中,因为guid是在SQL Server中生成的。有没有办法克服这个错误?

而不是:

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;
    }
}

您必须将
Guid
ID指定为EF模型中的标识。在EF 4.1中:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
Guid
id默认情况下不是身份,与
int
id相反。) 如果使用此模型创建数据库,EF将创建一个默认值为
newid()
的列


在EF 4.0中,您可以转到模型设计器,在设计器中标记Id属性,打开属性窗口,然后将
StoreGeneratedPattern
设置为
Identity

\u Id
不能为
null
,因为它是一种值类型。唯一可以与null进行比较的值类型是
Nullable
。感谢您提供的信息。设置storegeneratedpattern可以修复它。