2013-04-10 88 views
0

我已經使用過電動工具來逆向工程數據庫。它首先使用代碼創建類和映射。那裏不是問題。實體框架4.1無效的對象名稱'我'

,但是當我嘗試運行下面的代碼:

using (var tmp= new PdbContext("nameofdb") 
       { 


        try 
        { 
         tmp.Configuration.AutoDetectChangesEnabled = false; 


         var tmpUsr = (from t in tmp.DadosUtilizadores 
             where t.inactivo == false 
             select t).ToList(); 
        } 
        finally 
        { 
         tmp.Configuration.AutoDetectChangesEnabled = true; 
        } 
       } 

它拋出用以下文字異常。

無效的對象名稱「我們」

我搜索在這裏,結果發現,通過執行以下操作將解決我的問題:

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 

,但它仍然不解決我的問題。 所以我檢查了表的名稱,它是正確的。 打開linqpad並試圖訪問數據,它沒有任何問題的工作。有一件事引起了我的注意。該表有觸發器,觸發器會引發這種情況的問題嗎?

爲了更好地理解,下面的代碼引用了我的上下文類,名爲PdbContext 和名爲UtilizadoresMap的映射類。

PdbContext類

public class PdbContext:DbContext 
    { 
     public DbSet<Fltcl> FiltrosClientes { get; set; } 
     public DbSet<Fltst> FiltrosStocks { get; set; } 
     public DbSet<Bo> DossiersInternos { get; set; } 
     public DbSet<Cl> DadosClientes { get; set; } 
     public DbSet<Utilizadores> DadosUtilizadores { get; set; } 

     public PdbContext(string valueConn):base(valueConn) 
     { 
      Database.SetInitializer<PdbContext>(null); 
     } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Configurations.Add(new FltstMap()); 
      modelBuilder.Configurations.Add(new FltclMap()); 
      //modelBuilder.Configurations.Add(new ClMap()); 
      modelBuilder.Configurations.Add(new UtilizadoresMap()); 

      //teste 
      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
      // 
      base.OnModelCreating(modelBuilder); 
     } 
    } 

UtilizadoresMap類

public class UtilizadoresMap : EntityTypeConfiguration<Utilizadores> 
    { 
     public UtilizadoresMap() 
     { 
     ....... 
     ToTable("us"); 
     } 
    } 

幫助將提前

回答

0

理解 感謝我終於想通了出來。問題是我使用一個providerconnectionstring到數據庫,而不是隻加載字符串,並讓實體框架創建它。