【发布时间】:2017-10-13 14:20:36
【问题描述】:
我有以下实体(使用数据库优先创建)。它有两个指向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。这让我很吃惊,因为ToUserId 是在表中定义的第一个,我希望1 被附加到第二个。
我可以为它编写任何一种方式,但如果规则在某种程度上是随机的,那么我就无法为它编写代码。了解规则并知道哪个与哪个外键相关联至关重要。
有人知道这里涉及的规则吗?
【问题讨论】:
-
不知道。也许按外键约束名称排序?但是无论如何,您都应该在 edmx 设计器中重命名这些生成的属性名称(这将在 edmx 更新后继续存在),那么这真的很重要吗?
-
@GertArnold:我很难弄清楚如何以一种能够在 EDMX 更新中幸存下来的方式做到这一点。特别是因为更新效果不是很好,我通常需要删除所有表并在每次架构更改时重新导入它们。
-
@JonathanWood 你呢?我对数据库优先的体验完全不同。我有很多可以在更新后保留的名称自定义。只要您使用 EDMX 编辑器,通常就可以了。更新主要更新商店模型,而不是概念模型(嗯,不是全部,至少不是类和属性名称)。
-
@GertArnold:从历史上看,从设计师那里更新模型并没有正常工作,产生了有缺陷的结果。所以我养成了删除并重新导入所有表的习惯。它似乎变得更好了,可能比我想象的要好。
-
@JonathanWood 抱歉说得太早了。 Gert 是正确的,它们将在 EDMX 更新后继续存在。
标签: c# asp.net sql-server entity-framework linq