Sql server 数据库视图中具有多对多关系的LINQ实体

Sql server 数据库视图中具有多对多关系的LINQ实体,sql-server,asp.net-mvc,database,linq-to-sql,Sql Server,Asp.net Mvc,Database,Linq To Sql,我有个问题。我有一个多对多关系的数据库视图,看起来像这样 SELECT TOP (100) PERCENT dbo.PostAdditional.Description, dbo.PostAdditional.Summary, dbo.PostAdditional.Title, dbo.Post.PostID, dbo.Post.Type, dbo.Tags.TagID, dbo.Tags.TagName, FROM dbo.Post INNER JOIN dbo.PostAddition

我有个问题。我有一个多对多关系的数据库视图,看起来像这样

SELECT TOP (100) PERCENT dbo.PostAdditional.Description, dbo.PostAdditional.Summary,  dbo.PostAdditional.Title, dbo.Post.PostID, dbo.Post.Type, dbo.Tags.TagID, dbo.Tags.TagName, 
FROM dbo.Post 
INNER JOIN dbo.PostAdditional ON dbo.Post.PostID = dbo.PostAdditional.PostID 
INNER JOIN dbo.PostWithTags ON dbo.Post.EventID = dbo.PostWithTags.PostID 
INNER JOIN dbo.Tags ON dbo.PostWithTags.TagID = dbo.Tags.TagID
ORDER BY dbo.Post.StartDate, dbo.Post.PubDate
我想使用LINQtoSQL来处理它。当我通常将此视图放入DBML设计器中时,它会创建一个实体。但实体将proterty标记名作为字符串,我希望它作为标记名数组(或更好的列表)。当我从数据库中获取数据时,我会为每个单个标记获取一个Post实体副本,但我想获取一个包含所有相关标记数组的Post实体。

也许这会有帮助: 我将此连接从

INNER JOIN dbo.PostWithTags ON dbo.Post.EventID = dbo.PostWithTags.PostID 

如果我没弄错的话,这就是你想要的吗

var test=
    (
        from p in db.Post
        orderby p.StartDate,p.PubDate
        select new
        {
            p.PostID, 
            p.Type,
            Tags=
                (
                    from pa in db.PostAdditional
                    join pwt in db.PostWithTags 
                        on pa.PostID equals pwt.PostID
                    join t in db.Tags 
                        on pwt.TagID equals t.TagID
                    where p.PostID == pa.PostID
                    select new
                    {
                        pa.Description,
                        pa.Summary,
                        pa.Title,
                        t.TagID,
                        t.TagName
                    }
                )
        }
    ).ToList();

其中db是databasecontext

是的,我希望您编写的内容作为LINQ查询,但作为SQL视图,并从中生成LINQ实体。
var test=
    (
        from p in db.Post
        orderby p.StartDate,p.PubDate
        select new
        {
            p.PostID, 
            p.Type,
            Tags=
                (
                    from pa in db.PostAdditional
                    join pwt in db.PostWithTags 
                        on pa.PostID equals pwt.PostID
                    join t in db.Tags 
                        on pwt.TagID equals t.TagID
                    where p.PostID == pa.PostID
                    select new
                    {
                        pa.Description,
                        pa.Summary,
                        pa.Title,
                        t.TagID,
                        t.TagName
                    }
                )
        }
    ).ToList();