簡體   English   中英

在Entity Framework CodeFirst中使用接口/抽象類

[英]using interfaces/abstract classes with Entity Framework CodeFirst

我有一個Entity Framework CodeFirst Class(POCO):

class Contract : IMyContract
{
   ...
}

interface IMyContract
{
   public int DateSigned{get;}
}

當客戶端修改合同時,為什么不能以這種方式截獲上下文更改操作:

void context_SavingChanges(object sender, EventArgs e)
{

    foreach (ObjectStateEntry entry in
        ((ObjectContext)sender).ObjectStateManager.GetObjectStateEntries(
        EntityState.Added | EntityState.Modified | EntityState.Deleted))
    {

        IMyContract myContract = entry.Entity as IMyContract;
        if(myContract != null) 
        { 
           ...
        }
    }
}

您提到了代碼優先,但同時您正在處理ObjectContext事件並將發件人轉換為ObjectContext

試試這個:

public class MyContext : DbContext
{
    private static EntityState[] states = new EntityState[] 
        { 
             EntityState.Added,
             EntityState.Modified,
             EntityState.Deleted,
        };

    ...

    public override int SaveChanges()
    {
        // If Entires<IMyContract> doesn't work use Entries() and check type 
        // inside the loop
        foreach(var entry in ChangeTracker.Entries<IMyContract>()
                                          .Where(e => states.Contains(e.State))
        {
           ...
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM