我只是建立一个模型,其中包含他们所属的新闻文章和主题。这是一个简单的关联,但现在它有点“扩展”。其中一个主题关联可以标记为“mainTopic”。
我已经设置了3个表:
avsn_content
,其中包含id
avsn_content_topics
,包含关联,包含assocId
,id
,topicId
和指示mainTopic
avsn_topics
,其中包含由topicId
此外,我有这三个表的模型。我的关联模型设计如下:
[Table("avsn_content_topcis")]
public class TopicNewsModel
{
[Key]
[Column("assocId")]
public int Id { get; set; }
public NewsArticleModel NewsArticle { get; set; }
public TopicModel Topic { get; set; }
[Column("mainTopic")]
public bool IsMainTopic { get; set; }
}
我的关系设置如下:
modelBuilder.Entity<NewsArticleModel>()
.HasMany(x => x.Topics)
.WithMany()
.Map(m => m.MapLeftKey("id")
.MapRightKey("topicId")
.ToTable("avsn_content_topics"));
我收到此错误:
在模型生成期间检测到一个或多个验证错误:
NewsArticleModelTopicNewsModel:Name:EntitySet 'NewsArticleModelTopicNewsModel'与架构'dbo'和表 'avsn_content_topics'已经定义。每个EntitySet都必须引用 到一个独特的架构和表格。
删除ToTable
选项对它没有帮助,所以我在这里做错了什么?
答案 0 :(得分:0)
嗯,发布后立即找到答案。试图从绳索的另一端挑选问题表明我必须从TopicNewsModel开始,而不是从NewsModel开始。
modelBuilder.Entity<TopicNewsModel>()
.HasRequired(topicNews => topicNews.NewsArticle)
.WithMany(news => news.Topics)
.Map(m => m.MapKey("id"));
modelBuilder.Entity<TopicNewsModel>()
.HasRequired(topicNews => topicNews.Topic)
.WithMany()
.Map(m => m.MapKey("topicId"));