【问题标题】:Modify values before inserting through an EntityDataSource Object在通过 EntityDataSource 对象插入之前修改值
【发布时间】:2011-11-07 16:26:52
【问题描述】:

我有以下 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" />

我正在尝试将我在网格面板中添加的新数据添加到我的数据库中。

问题是当我单击网格面板中的添加按钮时,我的主键自动得到一个负值,它只是一个 id。

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

        protected void EntityDataSource_Inserting(object sender, EntityDataSourceChangingEventArgs e)
    {


    }

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

无论如何,我设置 myDatasetObject newElement = e.Entity 的尝试没有成功,因为 VisualStudio 告诉我我缺少演员表。

如何正确地做到这一点并以正确的顺序设置?

任何帮助将不胜感激。

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

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      与此同时,我想出了如何做我想做的事,我不确定这是否是一种非加超的方法,但它确实有效!

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-20
        • 1970-01-01
        相关资源
        最近更新 更多