Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架核心2中的导航属性_C#_Entity Framework Core - Fatal编程技术网

C# 实体框架核心2中的导航属性

C# 实体框架核心2中的导航属性,c#,entity-framework-core,C#,Entity Framework Core,我想使用EF(.NET Core 2.0)在两个表之间创建导航属性。我有一条包含FromUser和ToUser的消息(因为消息可以从一个用户发送到另一个用户),还有一条包含用户名和电子邮件等用户信息的消息 执行添加迁移时,我收到错误: 无法确定导航所表示的关系 类型为“User”的属性“Message.FromUser”。或者手动配置 或使用“[NotMapped]”忽略此属性 属性或使用“OnModelCreating”中的“EntityTypeBuilder.Ignore” 请告诉我如何正确

我想使用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
class
Configure
方法吗?好的,我找到了。它应该是:modelBuilder.ApplyConfiguration(newmessageconfiguration());