C# 设置外部类属性时自动设置Id

C# 设置外部类属性时自动设置Id,c#,entity-framework,C#,Entity Framework,我正在使用EntityFramework,我必须将类简化如下: public class Class1 { public int Id { get; set; } public int Class2_Id { get; set; } [ForeignKey("Class2_Id")] public virtual Class2 Class2 { get; set; } } public class Class2 { public int Id { get; set; }

我正在使用EntityFramework,我必须将类简化如下:

public class Class1
{
  public int Id { get; set; }

  public int Class2_Id { get; set; }
  [ForeignKey("Class2_Id")]
  public virtual Class2 Class2 { get; set; }
}

public class Class2
{
  public int Id { get; set; }
  public string Name { get; set; }
}

在调用
db.SaveChanges()
之前,我是否可以在设置
Class1.Class2
属性时自动设置
Class1.Class2.Id
?我希望实现这一点,而无需将此逻辑放在
Class1.Class2
属性的setter中

您可以从DbContext创建一个分部类extend并覆盖SaveChanges

public partial class YourEntities : DbContext
{
    public override int SaveChanges()
    {
        var Class1 = ChangeTracker.Entries().Where(
            e => e.State == EntityState.Added &&
                 e.Entity is Class1);
        // Class1.Class2.Id // your logic ...

        return base.SaveChanges();
    }
}

我想实现这一点,而不需要将此逻辑放在setter o Class1.Class2属性中,换句话说,您希望EF为您完成这一点。但是你已经知道它没有这样做,那么问题是什么呢?如果有任何方法来做这个设置的话。由于Class2属性有一个映射Class2_Id属性的属性,因此可以通过编程方式设置该值。它可以用于此特定的Class1类。我在寻找一种通用的方法来解决这个问题。也许我们可以改变这个想法。。。我将try@mqueirozcorreia不,您可以删除
&&e。实体是Class1
,如果您愿意,它将适用于所有内容