2012-01-03 6 views
1

ASP.NET MVCプロジェクトで設定したいFirebirdデータベースがあります。プロジェクトに「ADO.NET Entity Data Model」項目を追加し、問題のFirebirdデータベースを選択することで、自動的に生成されたModels.edmxファイルとModels.designer.csファイルを取得し、データベースの表と関係を視覚的に表示することができます。ASP.NET MVC自動生成モデル、どうすれば避けることができますか?

これに加えて、私が理解するように、アプリケーションが構築されると、舞台裏でModels.csdl、Models.ssdl、およびModels.msl ..が生成されますが、これらのファイルは表示または変更できません。

私はそんなにコントロールが私から取り除かれていないのが好きです。私のモデルがどのようにマップされているかについて私が少し知っていることは私には緊張しています。モデルに独自のメソッドを追加したいので、私のモデルクラスを自動的に生成させるのは好きではありません。

私のモデルを自動的に生成することなく、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" /> 

接続文字列は、DBのコンテキストと同じ名前を持つことがあります! (または別の場所に上書きする)

コントローラを自動的に生成するだけでよいのです。データベーススキーマが私のようなものなら、マッピングの問題にぶつかり、それらをカスタマイズする必要があります。 ) 1の代わりにADO.NETを使用するように何か他のものを探す -

+0

[ADO.Netを。]チェックアウト(http://msdn.microsoft.com/en-us/library/h43ks021%28v=VS.100%29.aspx)それは何のたくさんです経験豊富な開発者がエンタープライズアプリケーションで使用します。 – DOK

答えて

1

MVCの大きな点は、実装がどうなるかを決めることです。ルートweb.configファイルに接続文字列を作成し、現在のデータベーステーブルのマッピングを含むモデル.csを作成し、データアクセスレイヤデータベースコンテキストを作成します(エンティティフレームワークでは単純な実装でこれが実現します)。リポジトリまたはコントローラで、データベースコンテキストにアクセスし、linqを使用してすべてのデータベースデータにアクセスし、それを操作できます。

+0

それは私が残念ながら理解できないものです。 – NoPyGod

+0

あなたの答えが私を解決に導いてくれました。私は自分の投稿を編集してそれを見せました。 – NoPyGod

+0

よく見えます! :) –

1

あなたは別のORMを使用することができますエンティティフレームワーク。市販の製品(例:LLBLGen Pro)、またはFirebird DBをサポートするオープンソースツールさえあります。 LLBLGen Proは自動的にあなたの "モデル"を生成します(私はモデルをエンドユーザに表示し、データベースオブジェクトはより多くのドメインオブジェクトですが、二重引用符を使用しますが、各クラスにメソッドを追加することができます機能を拡張します。

2)実際に自分自身をマップしたい場合は、もう一度ドメインクラスを作成して自分のテーブル(たとえばNHibernate)にマップできるツールがあります。 COMPLETEコントロールを提供する別の方法は、独自のドメインクラスを作成し、コアADO.NET(DataReaders、DataConnectionsなど)を利用することです。 interwebsには.Net用のFirebirdプロバイダがあります。

0

まあ、私は2つのオプションが表示さこれらはわずか2非常に多くのオプションがある

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/ 

関連する問題