【发布时间】:2016-12-08 05:11:47
【问题描述】:
在 asp.net 核心项目中使用包管理器控制台进行迁移时,我遇到了 EntityFramework 核心模型关系问题。
添加迁移“Add-Migration”时出现以下错误。
无法确定“ICollection”类型的导航属性“College.Users”表示的关系。要么手动配置关系,要么从模型中忽略此属性。
完全错误
System.InvalidOperationException:无法确定“ICollection”类型的导航属性“College.Users”表示的关系。手动配置关系,或从模型中忽略此属性。 在 Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.PropertyMappingValidationConvention.Apply(InternalModelBuilder modelBuilder) 在 Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.OnModelBuilt(InternalModelBuilder modelBuilder) 在 Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext 上下文,IConventionSetBuilder 约定集生成器,IModelValidator 验证器) 在 System.Collections.Concurrent.ConcurrentDictionary
2.GetOrAdd(TKey key, Func2 valueFactory) 在 Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel() 在 Microsoft.EntityFrameworkCore.Internal.LazyRef1.get_Value() at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass16_0.<RealizeService>b__0(ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitTransient(TransientCallSite transientCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitTransient(TransientCallSite transientCallSite, ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass16_0.<RealizeService>b__0(ServiceProvider provider) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_01.b__0() 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(动作动作) 无法确定“ICollection”类型的导航属性“College.Users”表示的关系。要么手动配置关系,要么从模型中忽略此属性。
我有以下型号
public class College
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string CollegeName { get; set; }
[ForeignKey("Users")]
[JsonProperty("users")]
public ICollection<User> Users { get; set; }
}
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string UserName { get; set; }
[JsonProperty("email")]
public string UserEmail { get; set; }
[JsonProperty("phone")]
public string UserPhone { get; set; }
[ForeignKey("CollegeId")]
[JsonProperty("college")]
public College College{ get; set; }
}
请大家对这个问题有所了解。
谢谢
【问题讨论】:
标签: c# entity-framework entity-framework-migrations