现在我正在使用城堡活动记录在asp-net上构建一个Web应用程序。当我试图保存一个具有has-many关系的实体时,我得到错误:“对象引用一个未保存的瞬态实例 - 在刷新之前保存瞬态实例类型:SupBoardModel.Entities.Output,实体:SupBoardModel.Entities.Output# 0" 。在网上搜索我发现了这个错误的原因及其一些解决方案,但没有人为我工作。该关系已经有一个属性设置为Cascade = ManyRelationCascadeEnum.All,在网络上的一个共同的建议,所以......这里有什么错?有一段代码更多的信息和理解:错误:对象引用未保存的瞬态实例
//In some part of my application
State state = new State();
//Set some fields
//...
state.Outputs = (List<Output>)Session["outputs"]; //Collection filled on a web form but not saved yet
//Here is the error
state.SaveAndFlush(); // Booom!!!!
//Part of a definition of Output(child entity)
[Serializable, ActiveRecord(Table = "SUPB_OUTPUTS")]
public class Output : ActiveRecordBase<Output>
{
private int _id;
/// <summary>
/// Primary key
/// </summary>
[PrimaryKey(PrimaryKeyType.SeqHiLo, "OUTPUT_ID", SequenceName = "SEQ_OUTPUT_ID")]
public int Id
{
get { return _id; }
set { _id = value; }
}
private string _label;
/// <summary>
/// Output custom label
/// </summary>
[Property("OUTPUT_LABEL")]
public string Label
{
get { return _label; }
set { _label = value; }
}
private State _state;
/// <summary>
/// StateRef owner (An output is only available for one state)
/// </summary>
[BelongsTo("OUTPUT_ID_STATE", Lazy = FetchWhen.OnInvoke)]
public State StateRef
{
get { return _state; }
set { _state = value; }
}
}
// Part of a definition of State(parent entity)
[Serializable, ActiveRecord(Table = "SUPB_STATES")]
public class State : ActiveRecordBase<State>
{
private int _id;
/// <summary>
/// Primary key
/// </summary>
[PrimaryKey(PrimaryKeyType.SeqHiLo, "STATE_ID", SequenceName = "SEQ_STATE_ID")]
public int Id
{
get { return _id; }
set { _id = value; }
}
private string _name;
/// <summary>
/// StateRef name
/// </summary>
[Property("STATE_NAME")]
public string Name
{
get { return _name; }
set { _name = value; }
}
private string _description;
/// <summary>
/// StateRef description
/// </summary>
[Property("STATE_DESC")]
public string Description
{
get { return _description; }
set { _description= value; }
}
private IList<Output> _outputs;
/// <summary>
/// State outputs (Columns to display data)
/// </summary>
[HasMany(typeof(Output), Table = "SUPB_OUTPUTS", ColumnKey = "OUTPUT_ID_STATE", Lazy = true, Cascade = ManyRelationCascadeEnum.All)]
public IList<Output> Outputs
{
get { return _outputs; }
set { _outputs = value; }
}
}
这个错误让我发疯。我希望这是一种拯救国家的方式,而不用保存每个输出。级联属性对我来说没有任何变化,所有选项(All,AllDeleteOrfan,SaveUpdate)都给了我相同的结果。这种情况很常见,在http://docs.castleproject.org/%28X%281%29S%28znghcs55lveeljjvqg21vni4%29%29/Active%20Record.Getting%20Started.ashx上提到,但对我来说是个谜。有谁能够帮助我??
感谢 Menrique
会消失,如果你(在(名单
感谢Firo,但它没有工作,我刚刚得到同样的错误。看起来这里有些不对。 – menrique