2012-01-03 45 views
1

我們有一個現有的Firebird數據庫,我們希望在ASP.NET MVC項目中設置。通過在項目中添加一個'ADO.NET實體數據模型'項並選擇Firebird數據庫,我們能夠自動生成Models.edmx和Models.designer.cs文件,這些文件可視化地顯示數據庫表和關係。ASP.NET MVC自動生成模型,我該如何避免它

除此之外,據我瞭解,當應用程序建立後,它會生成Models.csdl,Models.ssdl和Models.msl ..但這些文件無法查看或修改。

我不喜歡這麼多的控​​制被從我身上帶走。這讓我很緊張,我對模型的映射知之甚少。我也不喜歡自動生成我的Model類,因爲我想將自己的方法添加到模型中。

誰能告訴我如何構建一個ASP.NET MVC應用程序,而不需要自動生成模型?爲了獲得更多的理解,我更願意將自己映射出來,而不需要任何嚮導程序。

編輯:

現在我到了某個地方。以下是我的模型和上下文對象的代碼。

using System.Data.Entity; 
using System.ComponentModel.DataAnnotations; 

public class COMPANY 
{ 

    [Key] 
    public string CODE { get; set; } 
    public string NAME { get; set; } 

} 

public class ModelContext : DbContext 
{ 


    public DbSet<COMPANY> Companies { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 

     modelBuilder.Entity<COMPANY>().ToTable("COMPANY"); 

     base.OnModelCreating(modelBuilder); 
    } 
} 

和連接字符串

<add name="ModelContext" 
    connectionString="data source=localhost;initial catalog=C:\SUPPORT.gdb;user id=SYSDBA;password=masterkey;character set=" 
    providerName="FirebirdSql.Data.FirebirdClient" /> 

連接字符串必須具有相同的名稱作爲數據庫上下文! (或在其他地方被覆蓋)

現在只需自動生成控制器,您就可以輕鬆前往。如果你的數據庫模式與我的類似,你將遇到映射問題,你需要定製它們。

+0

退房[ADO.Net](http://msdn.microsoft.com/en-us/library/h43ks021%28v=VS.100%29.aspx)這就是一個很大的有經驗的開發人員使用在企業應 – DOK 2012-01-03 20:53:35

回答

1

MVC的偉大之處在於您可以決定實施過程中會發生什麼。只需在根web.config文件中創建一個連接字符串,創建一個包含當前數據庫表映射的模型.cs然後創建一個數據訪問層數據庫上下文(實體框架通過簡單的實現實現這一點)。然後,在您的存儲庫或控制器中,您可以訪問數據庫上下文,並通過linq訪問所有數據庫數據並對其進行處理。

+0

這就是我不能弄清楚的。 – NoPyGod 2012-01-03 21:02:52

+0

你的回答讓我接觸到解決方案,我編輯了我的帖子以顯示它。 – NoPyGod 2012-01-03 22:13:05

+0

看起來不錯! :) – 2012-01-03 22:15:04

1

你可以使用不同的ORM:

NHibernate: https://www.google.com/search?aq=0&oq=nhibernate+fire&sourceid=chrome&ie=UTF-8&q=nhibernate+firebird 

Massive (if you prefer a light weight ORM) is another option: http://datachomp.com/archives/getting-started-with-massive-in-mvc3/ 

這些只是這麼多的選擇2

0

嗯,我看到兩個選項 - 1)找到別的東西,而不是使用ADO.NET實體框架。有商業產品(例如LLBLGen Pro),甚至支持Firebird DB的開源工具。雖然LLBLGen Pro自動生成您的「Models」(我使用雙引號,因爲我認爲Model是最終用戶顯示的內容,而數據庫對象是更多的域對象,但無論如何),您可以向每個類添加其他方法擴展功能。 2)如果你真的想自己映射它,再次有一些工具可以讓你創建你的域類並將它們映射到你自己的表(例如NHibernate)。另一個可以讓你完成控制的選擇是創建你自己的域類並利用核心ADO.NET(DataReaders,DataConnections等)。在互聯網中有一個Firebird Provider for .Net。

相關問題