2014-01-15 5 views
0
  • VS2012
  • EF 6.0.2

У меня есть вызов метода следующим образом, который генерирует исключение метод не найден: «Система System.Data.EntityState .Data.Entity.Infrastructure.DbEntityEntry.get_State() при вызове dataRepository.Update (platformUser);:метод не нашел DbEntityEntry.get_State()

public void LoginDelete(string aUserName) 
     { 
      MembershipUser loginToDelete = Membership.GetUser(aUserName); 

      if (loginToDelete != null) 
      { 
       using (DataRepository dataRepository = DataRepository.Instance()) 
       { 
        using (TransactionScope transaction = dataRepository.Transaction()) 
        { 
         string userMembershipId = loginToDelete.ProviderUserKey.ToString(); 
         PlatformUser platformUser = dataRepository.SingleOrDefault<PlatformUser>(r => r.MembershipUserId == userMembershipId); 

         if (platformUser != null) 
         { 
          platformUser.MembershipUserId = ""; 
          dataRepository.Update<PlatformUser>(platformUser); 
          dataRepository.Save(); 
         } 

         Membership.DeleteUser(aUserName); 

         transaction.Complete(); 
        } 
       } 

и мое хранилище данных определяется следующим образом:

public class EntityFrameworkRepository : IRepository 
{ 
    private readonly DbContext _DataContext; 

    public EntityFrameworkRepository(DbContext aDataContext) 
    { 
     _DataContext = aDataContext; 
    } 

    public int Save() 
    { 
     return _DataContext.SaveChanges(); 
    } 

    public T SingleOrDefault<T>(Expression<Func<T, bool>> aPredicate) where T : class 
    { 
     return _DataContext.Set<T>() 
          .SingleOrDefault(aPredicate); 
    } 


    public TransactionScope Transaction(TransactionScopeOption aTransactionScopeOption = TransactionScopeOption.RequiresNew, 
     IsolationLevel aIsolationLevel = IsolationLevel.ReadUncommitted) 
    { 
     return new TransactionScope(aTransactionScopeOption, 
      new TransactionOptions 
      { 
       IsolationLevel = aIsolationLevel 
      } 
      ); 
    } 

    public void Update<T>(T aEntity) where T : class 
    { 
     DbEntityEntry entityEntry = _DataContext.Entry(aEntity); 
     if (entityEntry.State == EntityState.Detached) 
     { 
      _DataContext.Set<T>() 
         .Attach(aEntity); 
      entityEntry.State = EntityState.Modified; 
     } 
    } 

    public DbContext DataContext 
    { 
     get { return _DataContext; } 
    } 

} 

public class DataRepository : EntityFrameworkRepository, IDisposable, IDataRepository 
{ 
    public DataRepository() : base(new DataContext()) 
    { 
    } 

    public static DataRepository Instance() 
    { 
     return new DataRepository(); 
    } 

} 

Может кто-нибудь объяснить мне, почему я получаю исключение, и как я могу это исправить?

ответ

1

Похоже, что у меня все еще была давняя ссылка на EF 5, плавающий вокруг, что вызывало проблему. Как только я убедился, что это тоже EF 6.0.2, все было хорошо.

Смежные вопросы