在Entity Framework Code First中检测对象创建

时间:2011-11-09 07:07:40

标签: c# entity-framework entity-framework-4.1

我正在使用Entity Framework 4.1。

我有一个带有自动生成的Id字段的类

 public class User
 {
    [Key]
    public int Id { get; set; }
 }

我想为每个用户在磁盘上创建一些匹配的目录(例如c:\ MyProgramFiles \ UserId)。为此,我需要检测到对象已由Entity Framework保存,因此分配了一个Id,我可以在文件路径中使用。

我更愿意把它连接起来,所以我不必写代码如下:

MyObjectContext.SaveChanges();
FileHelper.CreateUserDirectories(newUser.Id);

因为它依赖于没有被任何其他代码路径添加的用户。所以,我更喜欢挂钩实体框架事件,因此我可以检测正在创建的用户并在磁盘上创建匹配的目录。

问题是我只能在ObjectContext上看到'SavingChanges'事件。因为在保存对象之前调用它,所以它没用,因为对象仍然没有Id。

我想做的事情是否可以实现,如果可以,我该如何解决?

干杯!

1 个答案:

答案 0 :(得分:1)

以下问题的答案有帮助吗? Entity Framework SaveChanges - Customize Behavior?

它指的是创建自己的派生上下文并覆盖SaveChanges方法,以便在调用base.SaveChanges()之前和之后添加自定义逻辑。

感谢Ladislav Mrnka的答案。