在插入EntityDataSource对象之前修改值

时间:2011-11-07 16:26:53

标签: c# asp.net linq linq-to-entities

我有以下EntityDataSource对象:

 <asp:EntityDataSource ID="EntityDataSource1" runat="server"
    ContextTypeName="IntraNET_Prototype.IntraNetEntities" 
    ConnectionString="name=IntraNetEntities" 
    DefaultContainerName="IntraNetEntities" 
    EnableDelete="True" EnableInsert="True" 
    EnableUpdate="True" EntitySetName="EmployeeList" 
    OnInserting="EntityDataSource_Inserting" />

我正在尝试将我在gridpanel中添加的新数据添加到我的数据库中。

问题是,当我点击网格面板中的添加按钮时,我自动为主键获取负值,这只是一个id。

因此,我试图通过调用OnInserting =“EntityDataSource_Inserting”方法来操作将插入的对象的id值。

        protected void EntityDataSource_Inserting(object sender, EntityDataSourceChangingEventArgs e)
    {


    }

我的计划是创建一个新的数据集对象引用并将其设置为将要插入的对象,然后在此处修改主键ID。

无论如何,我设置myDatasetObject newElement = e.Entity的尝试不起作用,因为VisualStudio告诉我,我错过了演员。

如何正确地执行此操作并按正确顺序设置?

任何帮助将不胜感激。

如果你知道更好的方法来自动设置主键(只是一个连续的数字)(id标记),请告诉我!

感谢

2 个答案:

答案 0 :(得分:0)

您使用的数据库是什么,PK的数据类型是什么?您可以创建PK和标识列,然后EF将在创建记录后为您返回PK值。

答案 1 :(得分:0)

与此同时,我想出了如何做我想做的事情,我不确定这是不是非超级的做法,但它有效!

        protected void EntityDataSource_Inserting(object sender, EntityDataSourceChangingEventArgs e)
{
myDatasetObject newElement = e.Entity as myDatasetObject;
newElement.id = NextPrimaryID();
}

我需要更改元素的ID,然后将其保存到数据库: - )