2012-01-03 94 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。

相关问题