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
是一个值类型并且永远不能为空。
我有一个包含以下内容的模型 属性:
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
是一个值类型并且永远不能为空。