【发布时间】:2009-09-18 17:27:58
【问题描述】:
我正在制作我的第一个 MVC 应用程序的原型,它是一个简单的论坛。我已经完成了域模型的一部分,并且试图弄清楚如何仅在 SQL 中做一些非常基本的事情,但我无法在我的应用程序中弄清楚。这是我的实体:
[Table(Name="Users")]
public class User
{
[Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)]
public int Id { get; set; }
[Column] public string Username { get; set; }
[Column] public string Password { get; set; }
[Column] public string PasswordHash { get; set; }
[Column] public string PasswordSalt { get; set; }
[Column] public string FirstName { get; set; }
[Column] public string LastName { get; set; }
public List<Forum> AllowedForums { get; set; }
[Column] public DateTime LastLogin { get; set; }
[Column] public DateTime MemberSince { get; set; }
}
[Table(Name="Forums")]
public class Forum
{
[Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)]
public int Id { get; set; }
[Column] public int ParentId { get; set; }
[Column] public string Title { get; set; }
[Column] public string Description { get; set; }
[Column] public bool IsGlobal { get; set; }
[Column] public int DisplayOrder { get; set; }
}
我还有一个名为 AllowedForums 的链接表,如下所示:
userid forumid
1 4
为了选择允许用户查看的论坛和 IsGlobal == true 的论坛,我会在 SQL 中执行此操作:
SELECT * FROM Forums
LEFT OUTER JOIN AllowedForums ON Forums.id = AllowedForums.Forumid
WHERE AllowedForums.Userid = 1
OR Forums.IsGlobal = 1
我应该如何填充
public List<Forum> AllowedForums
使用 C#/Linq to SQL 的字段?
AllowedForum 应该是一个具有自己的表映射的值对象吗?这似乎有点矫枉过正,但我可以轻松加入。我简要地查看了 EntitySet,但我看到的简单示例似乎不合适。感觉应该有一种优雅的方式来为每个用户获取论坛对象的集合,但我想不出任何方法。顺便说一句,我是 C# 和 OO 的新手。我还应该提到,由于这些是应用程序的早期阶段,如果我没有看到更好的方法,我愿意更改实体或表的结构/关系。
【问题讨论】:
标签: c# asp.net-mvc linq linq-to-sql domain-driven-design