2010-12-16 35 views
0

這是一個更通用的問題,我不是100%的事實上,我提前道歉,如果事實證明這是一個華夫餅負荷!Linq到Sql域模型

我正在ASP.NET MVC2中創建一個網站,我正在設置我的域模型。我正在閱讀的書籍出現要建立C#中的表格之間的關係,而不是數據庫(或者我讀錯了?)。

如果是這樣,這是做到這一點的正確方法嗎?

例如,如果採取以下的2個域模型類:

[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服務器的關係的置換?是否想要定義C#中的實體之間的關係而不是數據庫本身?

只是有點困惑,正如我所說我可能完全偏離這裏。

+0

如果您的「創建網站」(即從頭開始) - 爲什麼從一個過時的技術開始?我強烈建議你使用實體框架。在你的發言中更是如此 - 因爲你可以先使用代碼優先或模型優先並生成數據庫(不必首先執行數據庫)。 – RPM1984 2010-12-16 22:13:27

+0

Linq to Sql和Domain Model是不應該一起使用的兩個詞。 Linq to Sql只會執行持久性模型,並且不能真正映射您需要用於DDD的許多高級場景。 – jfar 2010-12-17 04:03:27

回答

3

不,您仍然應該在數據庫中創建關係。您在C#代碼中看到的只是LinqToSql如何知道哪些表和列構成關係。但是,您仍然應該在數據庫中創建關係,以便強制執行數據完整性。

+0

+1我猜他將這兩個表拖放到一個dbml中,並且基於數據庫中定義的關係爲它創建了這些表,因爲它應該是 – hunter 2010-12-16 21:24:48

+0

不,我沒有拖放,我編碼了上面的代碼我自己(出於對它的工作原理的好奇)。 – AndrewC 2010-12-16 21:25:52

+0

什麼是一對多關係,我如何在代碼中實現這些關係? – AndrewC 2010-12-16 21:26:51