0

我有一个名为 topic 的代码优先 poco 类。由此,我创建了一个名为 topicWith 的继承类,其中包含一些额外的聚合字段,例如消息计数,以及在主题中创建消息的最后一个用户。在我的控制器中,我首先获取一个 topicWith,然后我想用 +1 更新基本主题的阅读次数。如果我尝试保存 topicWith 对象,则会收到错误消息:实体类型 TopicWith 不是当前上下文模型的一部分。即使我已经明确地将对象转换为“主题”,我也得到了这个

这是我正在做的事情的简短版本。

[NotMapped]
public class TopicWith : Topic
{
    public virtual int NumberOfMessages { get; set; }
}

var topics = from topic in context.Topics
                select
                    new TopicWith
                        {
                            ForumID = topic.ForumID,
                            TopicID = topic.TopicID,
                            Subject = topic.Subject,
                            Hide = topic.Hide,
                            Locked = topic.Locked,
                            Icon = topic.Icon,
                            NoOfViews = topic.NoOfViews,
                            Priority = topic.Priority,
                            Forum = topic.Forum,
                            Messages = topic.Messages,
                            NumberOfMessages = topic.Messages.Count()
                        };
var topicWith = topics.FirstOrDefault();
topicWith.NoOfViews++;
context.Topics.Add((Topic) topicWith);

解决此问题的最佳方法是什么?

4

1 回答 1

2

可能的解决方案

var topics = from topic in context.Topics
            select
                new {
                        Topic = topic,
                        NumberOfMessages = topic.Messages.Count()
                    };
var topicWith = topics.FirstOrDefault();
topicWith.Topic.NoOfViews++;
context.Topics.Add(topicWith.Topic);
于 2013-03-10T19:12:13.430 回答