2014-09-05 43 views
1

我對實體框架和MVC相當陌生。我可以在現有的SQL服務器數據庫上使用實體數據模型嚮導(EDMW),並自動創建必要的類(上下文,模型等)。然後將模型(db.Employees.tolist())從控制器傳遞到視圖。一切正常,我可以從company.employees表中看到瀏覽器上所有員工的列表。但是,我想在EDMW或其他工具的幫助下自己編寫代碼,以更好地理解實體/ MVC /數據庫交互。所以我寫了下面的代碼,但似乎無法讓瀏覽器顯示錶格。我知道我錯過了一些東西。先用現有數據庫代碼

SQL SERVER: Schema.tablename(Acme.Employees)

public class AcmeContext : DbContext 
{ 
    public virtual DbSet<Employee> Employees { get; set; } 
} 

public class Employee 
{ 
    public int customerid {get; set;} 
    public string name {get;set;} 
    public string state {get;set;} 
} 


public ActionResult list() 
{ 
    var db = new AcmeContext(); 
    return view(db.Employees.tolist()); 
} 

<connectionStrings> 
    <add 
    name="AcmeContext" 
    connectionString="data source=localhost;initial catalog=Acme;integrated security=True;" 
    providerName="System.Data.SqlClient" /> 
</connectionStrings> 

需要什麼呢?

另外,當數據庫已經存在時,這在現實世界中如何完成?開發人員是使用EDM嚮導還是手動編寫嚮導在Visual Studio或其他IDE中執行的所有操作?

+0

有幾件事。你沒有添加員工,你的數據庫將是空的。你應該在你的POCO上聲明一個'[Key]'。你遇到了什麼錯誤? – Jonesopolis 2014-09-05 02:46:44

+0

@Jonesy我會在哪裏添加員工?我在customerid上面有[Key]屬性,但上面的代碼片段沒有顯示它。我其實沒有看到任何錯誤。瀏覽器無視任何視圖。 – bnsffan 2014-09-05 03:22:39

回答

0

默認情況下,當您第一次使用實體框架代碼,架構是dbo 可以使用流利的API或數據Anotation

流利的API使用改變模式:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Employee>().ToTable("Employees", "Acme"); 
} 

數據Anotations

[Table("Employees", Schema = "Acme")] 
public class Employee 
{ 
    ... 
} 
+0

我已經試過你的建議沒有用。 – bnsffan 2014-09-05 14:25:48

0

您沒有建築物調用您的連接字符串

公共類AcmeContext:的DbContext {

公共AcmeContext():基座(nameOrConnectionString: 「AcmeContext」){}

保護覆蓋無效OnModelCreating(DbModelBuilder模型構建器) { modelBuilder.Conventions.Remove( ); }

public virtual DbSet Employees {get;組; } }

你的問題已經在這裏回答。請參考這個主題 Code-first vs Model/Database-first

+0

我想EF基於web.config中的「name = AcmeContext」選擇正確的連接字符串,AcmeContext是類名稱。我會嘗試你的建議。 – bnsffan 2014-09-05 14:24:25

0

我解決了我的問題。

EF創建了一個表dbo.employees,而不是使用acme.employees。一直以來,它都是在dbo模式下查看員工表。當然,該表中沒有數據,因此也沒有空白網頁。我添加了一些數據,現在可以在頁面上看到它。

我仍然不知道的是Aiska Hendra建議的數據註釋沒有提前工作。

相關問題