C# 实体框架核心2中的导航属性
我想使用EF(.NET Core 2.0)在两个表之间创建导航属性。我有一条包含FromUser和ToUser的消息(因为消息可以从一个用户发送到另一个用户),还有一条包含用户名和电子邮件等用户信息的消息 执行添加迁移时,我收到错误: 无法确定导航所表示的关系 类型为“User”的属性“Message.FromUser”。或者手动配置 或使用“[NotMapped]”忽略此属性 属性或使用“OnModelCreating”中的“EntityTypeBuilder.Ignore” 请告诉我如何正确创建这些属性,好吗C# 实体框架核心2中的导航属性,c#,entity-framework-core,C#,Entity Framework Core,我想使用EF(.NET Core 2.0)在两个表之间创建导航属性。我有一条包含FromUser和ToUser的消息(因为消息可以从一个用户发送到另一个用户),还有一条包含用户名和电子邮件等用户信息的消息 执行添加迁移时,我收到错误: 无法确定导航所表示的关系 类型为“User”的属性“Message.FromUser”。或者手动配置 或使用“[NotMapped]”忽略此属性 属性或使用“OnModelCreating”中的“EntityTypeBuilder.Ignore” 请告诉我如何正确
谢谢大家! “它应该是两个集合,一个用于FromUser,另一个用于ToUser”这正是它所需要的。然后使用两个
实体
+Has
+With
将集合导航属性映射到其相应的反向引用导航属性。您可以在配置
方法中执行此操作。在这种情况下,不需要调用实体
,而生成器
参数也有同样的作用。例如,builder.HasOne(m=>m.FromUser)。WithMany(u=>u.SentMessages)
和builder.HasOne(m=>m.ToUser)。WithMany(u=>u.ReceivedMessages)
请注意,此模型引入了多个级联路径,因此您必须为两个关系(.OnDelete(deletebhavior.Restict)中的至少一个关闭级联删除
)是的。单一关系总是有两个端点,但它仍然是一个单一的定义,因此必须只在一个位置进行配置。但您不应该这样做。您确定调用了MessageConfiguration
classConfigure
方法吗?好的,我找到了。它应该是:modelBuilder.ApplyConfiguration(newmessageconfiguration());