Entity framework 4 如何使用Entity Framework 4.0插入事件在插入时添加项

Entity framework 4 如何使用Entity Framework 4.0插入事件在插入时添加项,entity-framework-4,Entity Framework 4,好的,我有两张桌子 用户稳定 用户标识guid不为空 用户名nvarchar …更多领域 文章表 Articleid int不为空 第条正文 用户标识guid不为空 用户名nvarchar不为空 …更多领域 要添加文章,用户必须登录。所以我这样做是为了得到他们的用户名和用户名 ' get the user currently logged in Dim currentUser As MembershipUser = Membership.GetUser()

好的,我有两张桌子

用户稳定
  • 用户标识guid不为空
  • 用户名nvarchar
  • …更多领域
文章表
  • Articleid int不为空
  • 第条正文
  • 用户标识guid不为空
  • 用户名nvarchar不为空
  • …更多领域
要添加文章,用户必须登录。所以我这样做是为了得到他们的用户名和用户名

 ' get the user currently logged in
        Dim currentUser As MembershipUser = Membership.GetUser()
        ' Determine the currently logged on user's UserId value
        Dim currentUserId As Guid = CType(currentUser.ProviderUserKey, Guid)
我想要的是,当登录用户将一篇文章插入到文章表中时, 我想将用户名和userid添加到article表中。 我正在使用实体框架4.0和VB编程 谢谢
您说过可以在对象上下文中重写SaveChanges方法,然后检查处于插入状态的实体。所以,如果您将对象上下文称为MembershipEntities,并且它是为您自动生成的,那么您可以创建一个称为MembershipEntities的分部类

在C#


我还没有测试过这段代码,但它应该可以工作。

谢谢Dan,但是我已经使用Entity Framework使成员部分工作正常。我的问题是如何将添加文章的人的用户名添加到文章表中。也就是说,当用户登录时,他们的用户名将添加到他们提交的文章中。如果我不使用实体框架,这很好用。干杯,yousaidI刚刚将会员资格用作我的示例,以便您可以根据需要进行更改。现在我很困惑,因为你说你有登录用户的用户名。该用户正在添加新文章。您的文章实体中是否有名为username的属性?如果您在保存实体之前拥有用户名,只需将entities username属性设置为与登录用户的用户名相等,然后保存即可。再次感谢。是的,我的文章实体中有一个名为username的属性。文章实体如下所示•Articleid int not null•Article ntext•userid guid not null•username nvarchar not null•…获取当前登录用户的更多字段:Dim currentUser As MembershipUser=Membership.GetUser()Dim currentUserId As guid=CType(currentUser.ProviderUserKey,guid)我有一个名为usernameTextbox的文本框。当页面加载时,它捕获用户名。那么,如何在保存更改之前将此属性设置为textbox的值?对不起,我还在学习C语言,我转换了你的C语言代码,在VB中看起来是这样的。我需要补充什么?导入系统公共部分类MembershipEntities公共重写函数SaveChanges(作为SaveOptions的选项)作为整数Dim memberships=Me.ObjectStateManager.GetObjectStateEntries(EntityState.Added)。[Select](函数(e)e.Entity.ToList()'在插入数据之前执行所需操作。。。Dim changes As Integer=MyBase.SaveChanges(options)End函数End classok,因此您的页面加载得到一个MembershipUser对象,并将其称为currentUser。它还获取guid并将currentUserId设置为该guid。因此,您的currentUser应该具有username属性。对的好的,您有您的登录用户用户名和guid。现在,您需要创建文章实体并用文章信息填充它,还需要设置Article.username=currentUser.username(或Article.username=textbox.Text)和Article.userid=currentUserId。现在,将项目实体附加到objectContext,然后调用contextObject.SaveChanges()。
public partial class MembershipEntities
{
    public override int SaveChanges(SaveOptions options)
    {
        var memberships = this.ObjectStateManager.GetObjectStateEntries(EntityState.Added).Select(e => e.Entity).ToList();

        //Do what you need to do before you insert your data...

        int changes = base.SaveChanges(options);

    }
}