C# 使用同一个表的两个外键在表中进行惊人的命名

C# 使用同一个表的两个外键在表中进行惊人的命名,c#,asp.net,sql-server,entity-framework,linq,C#,Asp.net,Sql Server,Entity Framework,Linq,我有以下实体(首先使用数据库创建)。它有两个指向AspNetUser表的外键 public partial class Message { public int Id { get; set; } public string ToUserId { get; set; } public string FromUserId { get; set; } public string Message1 { get; set; } public bool Viewed

我有以下实体(首先使用数据库创建)。它有两个指向
AspNetUser
表的外键

public partial class Message
{
    public int Id { get; set; }
    public string ToUserId { get; set; }
    public string FromUserId { get; set; }
    public string Message1 { get; set; }
    public bool Viewed { get; set; }
    public System.DateTime TimeStampUtc { get; set; }

    public virtual AspNetUser AspNetUser { get; set; }
    public virtual AspNetUser AspNetUser1 { get; set; }
}
我发现
AspNetUser
对应于
FromUserId
,而
AspNetUser1
对应于
ToUserId
。这让我感到惊讶,因为
tuserid
是在表中首先定义的,我希望
1
会附加到第二个

我可以用任何一种方式编码,但如果规则在如何确定这一点上有点随机,我就无法编码。我必须了解这些规则,并知道哪些规则将与哪些外键关联,这一点至关重要


有人知道这里涉及的规则吗?

在edmx中,您可以通过单击属性并更改
名称来重命名导航属性。这将在EDMX更新后仍然有效。但是,如果您从EDMX中完全删除它,然后再次从数据库中构建它,那么在这种情况下,您将需要再次重命名它。否则,你应该没事。

我不知道。可能按外键约束名称排序?但是您应该在edmx设计器中重命名这些生成的属性名称(这将在edmx更新后仍然有效),所以这真的很重要吗?@GertArnold:我很难想出如何在edmx更新后仍然有效。尤其是因为更新效果不太好,我通常需要删除所有表,并在每次架构更改时重新导入它们。@JonathanWood,你呢?我第一次使用数据库的经验完全不同。我有大量的名称定制,可以在更新后继续使用。只要使用EDMX编辑器,通常就可以了。更新主要是更新存储模型,而不是概念模型(不是全部,至少不是类和属性名称)。@GertArnold:从历史上看,从设计器更新模型没有正常工作,产生有缺陷的结果。所以我养成了删除和重新导入所有表的习惯。“情况似乎有所好转,可能比我想象的要好。”乔纳桑伍德抱歉说得太早了。Gert是正确的,它们将在EDMX更新后存活。