亚音速3保存(),然后更新()?(Subsonic 3 Save() then Update()?)

2019-07-17 13:40发布

我需要得到一个行的主键,然后将其插入到字符串中的其他支柱之一。

所以,我一直试图做这样的事情:

newsObj = new news();
newsObj.name = "test"
newsObj.Save();
newsObj.url = String.Format("blah.aspx?p={0}",newsObj.col_id);
newsObj.Save();

不过,这并不把它当作同一个数据对象,以便newsObj.col_id总是回来作为一个零。 是否有这样做的另一种方式? 我想这另一页上,并得到它的工作,我不得不设置newsObj.SetIsLoaded(true);

这是实际代码块:

page p;

if (pageId > 0)
    p = new page(ps => ps.page_id == pageId);
else
    p = new page();

if (publish)
    p.page_published = 1;

if (User.IsInRole("administrator"))
    p.page_approved = 1;

p.page_section = staticParent.page_section;
p.page_name = PageName.Text;
p.page_parent = parentPageId;
p.page_last_modified_date = DateTime.Now;
p.page_last_modified_by = (Guid)Membership.GetUser().ProviderUserKey;
p.Add();
string urlString = String.Empty;
if (parentPageId > 0)
{
    urlString = Regex.Replace(staticParent.page_url, "(.aspx).*$", "$1");  // We just want the static page URL (blah.aspx)          
    p.page_url = String.Format("{0}?p={1}", urlString, p.page_id);
}
p.Save();

如果我悬停p.Save(); 我可以看到正确的值对象,但DB从不更新并没有什么异常。 谢谢!

Answer 1:

我面临着同样的问题与:

OPO婆=新();

oPo.name = “测试”;

oPo.save(); //至今它的工作原理。

oPo.name = “test2的”;

oPo.save(); //没有真正的工作,因为isLoaded被设置为false,列不被认为是肮脏的它不保存数据。

它是3.0.0.3版本中ActiveRecord.tt的错误。

在方法public void添加后立即SetIsNew(假)(IDataProvider提供商); 应该有:SetIsLoaded(真);

为什么保存不工作,第二次的理由是因为如果没有加载它的对象不能弄脏。 通过添加在ActiveRecord.tt的SetIsLoaded(真),当你打算怎么办运行自定义工具,它会重新生成的.cs完美。



文章来源: Subsonic 3 Save() then Update()?
标签: subsonic3