2010-12-16 17 views
0

これはより一般的な質問です。これがワッフルの負荷であることが判明した場合、私が実際に謝っていることについて私は100%ではありません!Linq to SQLドメインモデル

私はASP.NET MVC2でウェブサイトを作成しています。ドメインモデルの設定を検討しています。私はと表示されている書籍を読んで、データベースとは対照的にC#のテーブル間の関係を設定しています(あるいは多分私はそれを間違って読んでいますか?)。

もしそうなら、正しい方法ですか?

[Table(Name="Users")] 
public class User 
{ 
    [Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)] 
    public int ID{get;set;} 
    public string Name{get;set;} 
} 

[Table(Name="Posts")] 
public class Post 
{ 
    [Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)] 
    internal int ID{get;set;} 
    internal int MemberID {get;set;} 
    public string Body {get;set;} 

    internal EntityRef<User> _user; 
    [Association(ThisKey="MemberID", storage="_user")] 
    public User User 
    { 
     get{ return _user.Entity; } 
     internal set{ _member.Entity = value; ID = value.ID; } 
    } 
} 

EntityRef、これはMSSQL Serverの関係を作成するための代替です:

例えば、場合は、以下の2ドメインモデルクラスを取りますか? C#ではエンティティ間の関係をデータベース自体ではなく定義するというアイデアはありますか?

ちょっと混乱していましたが、私が言ったように私はコースから完全に離れることができました。

+0

「ウェブサイトを作成する」(つまりゼロから) - なぜ旧式のテクノロジーから始めるのですか? Entity Frameworkの使用を強くお勧めします。あなたの居場所では、コードを先に使うことも、モデルを先に使うこともできますし、DBを生成することもできます(DBを最初に行う必要はありません)。 – RPM1984

+0

Linq to SqlとDomain Modelは、一緒に使用すべきでない2つの単語です。 LINQ to Sqlは永続性モデルを実行するだけで、DDDに必要な高度なシナリオを実際にマップすることはできません。 – jfar

答えて

3

いいえ、依然としてデータベースにリレーションシップを作成する必要があります。 C#コードで見られるのは、LinqToSqlがテーブルと列がどのような関係を構成しているかを知ることだけです。ただし、データの整合性を確保できるように、データベース内のリレーションシップを作成する必要があります。

+0

+1私は彼がdbmlにこれらの2つのテーブルをドラッグ・アンド・ドロップしたと推測しているので、データベースに定義された関係に基づいてこれらのテーブルを作成しました。 – hunter

+0

いいえ、ドラッグ・アンド・ドロップしなかったので、自分自身(好奇心のせいで動作する方法)。 – AndrewC

+0

そして、1対多の関係のうち、どのようにそれらをコードに実装するのですか? – AndrewC