【发布时间】:2020-12-21 12:54:17
【问题描述】:
我正在尝试使用 EF Core 设置一个新项目。为了定义我的实体之间的关系,我使用了OnModelCreating 事件:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Article>(article =>
{
article.OwnsOne(e => e.Category);
article.OwnsOne(e => e.CurrentCondition, condition =>
{
condition.OwnsMany(e => e.CriteriaConditions, articleCriteriaCondition =>
{
articleCriteriaCondition.OwnsOne(e => e.Criteria, criteria =>
{
criteria.OwnsMany(e => e.CriteriaOptions, criteriaOption =>
{
criteriaOption.OwnsOne(e => e.FollowUp);
});
});
});
condition.OwnsOne(e => e.CurrentCategory);
});
});
modelBuilder.Entity<Department>(department =>
{
department.OwnsMany(e => e.Categories);
department.OwnsMany(e => e.CriteriaCatalogues, criteriaCatalogue =>
{
criteriaCatalogue.OwnsMany(e => e.Criterias, criteria =>
{
criteria.OwnsMany(e => e.CriteriaOptions, criteriaOption =>
{
criteriaOption.OwnsOne(e => e.FollowUp);
});
});
criteriaCatalogue.OwnsMany(e => e.CriteriaCatalogues);
});
department.OwnsMany(e => e.Criterias, criteria =>
{
criteria.OwnsMany(e => e.CriteriaOptions, criteriaOption =>
{
criteriaOption.OwnsOne(e => e.FollowUp);
});
});
});
}
请注意,CriteriaCatalogue 可以包含许多其他 CriteriaCatalogues。
现在在尝试运行 Database.EnsureDeleted(); 时,我收到以下错误消息:
System.InvalidOperationException: 'The entity type 'ArticleCriteriaCondition.Criteria#Criteria' is configured as owned, but the entity type 'Department.CriteriaCatalogues#CriteriaCatalogue.Criterias#Criteria.CriteriaOptions#CriteriaOption.FollowUp#Criteria' is not. All entity types sharing a CLR type must be configured as owned.'
虽然我认为我确实正确配置了我的 FollowUp,但我显然没有。有人可以帮我吗?我不知道该怎么办。
【问题讨论】:
-
你使用的语法我不熟悉,我不知道 fluent 的全部细节,但我会发布一个不同的选项,至少对我来说看起来更容易。可能有帮助,也可能没有。
标签: c# entity-framework .net-core entity-framework-core