2010-12-16 36 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