实体框架不保存数据

时间:2016-04-05 12:39:53

标签: c# entity-framework guid

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

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

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

但是,当我调用db.SaveChanges()时,我从实体框架中收到一条错误,指出尽管存在值,它仍然无法在此字段中插入NULL。

有什么想法吗?

修改

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

1 个答案:

答案 0 :(得分:1)

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是值类型且永远不能为空。