将关联属性与 Entity Framework 结合使用
Use association properties with Entity Framework
我只是建立一个模型,你有新闻文章和它们所属的主题。这是一个简单的关联,但现在有点 "extended"。这些主题关联之一可以标记为 "mainTopic"。
我设置了 3 个表:
avsn_content
,包含由 id
标识的新闻文章
avsn_content_topics
,包含 assoc,具有 assocId
、id
、topicId
和指示 mainTopic
[= 的列24=]
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"));
我收到这个错误:
One or more validation errors were detected during model generation:
NewsArticleModelTopicNewsModel: Name: The EntitySet
'NewsArticleModelTopicNewsModel' with schema 'dbo' and table
'avsn_content_topics' was already defined. Each EntitySet must refer
to a unique schema and table.
删除 ToTable
选项没有帮助,所以我在这里做错了什么?
好吧,发布后马上找到了答案。试图从绳索的另一端找出问题表明我必须从 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"));
我只是建立一个模型,你有新闻文章和它们所属的主题。这是一个简单的关联,但现在有点 "extended"。这些主题关联之一可以标记为 "mainTopic"。
我设置了 3 个表:
avsn_content
,包含由id
标识的新闻文章
avsn_content_topics
,包含 assoc,具有assocId
、id
、topicId
和指示mainTopic
[= 的列24=]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"));
我收到这个错误:
One or more validation errors were detected during model generation:
NewsArticleModelTopicNewsModel: Name: The EntitySet 'NewsArticleModelTopicNewsModel' with schema 'dbo' and table 'avsn_content_topics' was already defined. Each EntitySet must refer to a unique schema and table.
删除 ToTable
选项没有帮助,所以我在这里做错了什么?
好吧,发布后马上找到了答案。试图从绳索的另一端找出问题表明我必须从 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"));