Entity Framework 不保存数据

Entity Framework not saving data

我有一个包含以下内容的模型 属性:

public Guid UniqueID
{
    get { return Guid.NewGuid(); }
}

如果我在对象创建后对其进行检查,我可以看到已为 UniqueID 字段正确创建了一个新的 guid。

但是,当我调用 db.SaveChanges() 时,我从 Entity Framework 返回一个错误,指出它不能将 NULL 插入该字段,尽管存在一个值。

有什么想法吗?

编辑

private Guid _uniqueID = Guid.NewGuid();
public Guid UniqueID
{
    get
    {
        if(_uniqueID == null){
            _uniqueID = Guid.NewGuid();
        }
        return _uniqueID;
    }
    set
    {
        _uniqueID = value;
    }
}

EF 不支持 get-only 属性。 EF 需要某种方式才能在从数据库加载时设置值。如果要使字段不可变,可以使用私有 setter:

private Guid _uniqueID = Guid.NewGuid();
public Guid UniqueID
{
    get
    {
        return _uniqueID;
    }
    private set
    {
        _uniqueID = value;
    }
}

请注意,这与您的编辑略有不同。我制作了 setter private 并取出了 if(_uniqueID == null) 因为 Guid 是一个值类型并且永远不能为空。