FormView从插入中获取主键

时间:2013-11-19 00:39:24

标签: c# ef-code-first entity-framework-5

我有一个使用VS2013和Entity Framework 6的Web窗体应用程序。只需从VS2012和EF5升级而无需更改。

有一个文章编辑器表单,一旦插入一个项目,将通过Id将用户重定向到另一个表单。 (像精灵一样)

插入记录可以正常运行。问题是捕获新记录Id。 InsertItem确实从数据库返回新的Id。

我尝试过创建一个似乎没有值的事件处理程序。

知道如何捕获返回的Id吗?我们将不胜感激。

提前致谢。

// Web Form ArticleEditor code behind

public partial class ArticleEditor : System.Web.UI.Page
{
    // page level variables
    private readonly IArticleRepository _repository = new ArticleRepository();

// more stuff here


 frmArticle_OnItemInserted(object sender, formViewInsertedEventArgs e)
 {
  // I assume the value can be captured here???
 }



// FormView
<asp:FormView runat="server" ID="frmArticle" RenderOuterTable="True" 
    ItemType="WebApplication.BLL.Model.Article" DataKeyNames="ArticleId" 
    DefaultMode="ReadOnly" 
    SelectMethod="GetItem"
    InsertMethod="InsertItem"
    UpdateMethod="UpdateItem"
    DeleteMethod="DeleteItem" 
    OnItemInserted="frmArticle_OnItemInserted"  
    CssClass="FormView">

        <InsertItemTemplate>
    // controls here
    </InsertItemTemplate>
</FormView>

// repository ArticleRepository
    private readonly AppDbContext _db = new AppDbContext();

    public int InsertItem(ModelMethodContext modelMethodContext)
    {
        // create new model object
        var obj = new Article();

        // attempt to save model
        modelMethodContext.TryUpdateModel(obj);
        if (!modelMethodContext.ModelState.IsValid)
        {
            // model is in an invalid state
            return 0;
        }
        _db.Articles.Add(obj);
        _db.SaveChanges();

        return obj.ArticleId;
    }

0 个答案:

没有答案