Subsonic 3 Save() then Update()?

喜你入骨 提交于 2019-12-09 02:00:01

问题


I need to get the primary key for a row and then insert it into one of the other columns in a string.

So I've tried to do it something like this:

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

But it doesn't treat it as the same data object so newsObj.col_id always comes back as a zero. Is there another way of doing this? I tried this on another page and to get it to work I had to set newsObj.SetIsLoaded(true);

This is the actual block of code:

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();

If I hover the p.Save(); I can see the correct values in the object but the DB is never updated and there is no exception. Thanks!


回答1:


I faced the same problem with that :

po oPo = new po();

oPo.name ="test";

oPo.save(); //till now it works.

oPo.name = "test2";

oPo.save(); //not really working, it's not saving the data since isLoaded is set to false and the columns are not considered dirty.

it's a bug in the ActiveRecord.tt for version 3.0.0.3.

In the method public void Add(IDataProvider provider) immediately after SetIsNew(false); there should be : SetIsLoaded(true);

the reason why the save is not working the second time is because the object can't get dirty if it is not loaded. By adding the SetIsLoaded(true) in the ActiveRecord.tt, when you are going to do run custom tool, it's gonna regenerate the .cs perfectly.



来源:https://stackoverflow.com/questions/1402187/subsonic-3-save-then-update

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!