gpt4 book ai didi

c# - Entity Framework 对导航属性感到困惑

转载 作者:太空狗 更新时间:2023-10-29 23:14:08 27 4
gpt4 key购买 nike

我正在使用 Entity Framework 6.1.1,我有一个 Users 表和一个 User_Documents 表(1:many)。我已经有一个从 User_DocumentsUser 的导航属性,一切正常。

public partial class User_Document
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long User_Document_ID { get; set; }

public long User_ID { get; set; }

[ForeignKey("User_ID")]
public virtual User User { get; set; }
}

我添加了一个从 Users 到 User_Documents 的导航属性

public partial class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long User_ID { get; set; }

[StringLength(50)]
public string Username { get; set; }

public virtual List<User_Document> Documents { get; set; }
}

现在我在尝试运行应用程序时遇到错误:

System.Data.Entity.ModelConfiguration.ModelValidationException: One or more validation errors were detected during model generation:

User_Documents: Name: Each member name in an EntityContainer must be unique. A member with name 'User_Documents' is already defined.

当然有一个名为 User_Documents 的表,但没有其他属性具有该名称。我不确定它被什么弄糊涂了。也许它使用表名“User”和属性名“Documents”并试图从中创建一个名为“User_Documents”的东西?如果我将它重命名为 from DocumentsSome_Documents 这样

public virtual List<User_Document> Some_Documents { get; set; }

然后我得到一个不同的错误说明

System.InvalidOperationException: The model backing the 'PipeTrackerContext' context has changed since the database was created. Consider using Code First Migrations to update the database

所以我运行 Add-Migration 并得到这个:

public override void Up()
{
AddColumn("dbo.User_Documents", "User_User_ID", c => c.Long());
CreateIndex("dbo.User_Documents", "User_User_ID");
AddForeignKey("dbo.User_Documents", "User_User_ID", "dbo.Users", "User_ID");
}

为什么要尝试添加一个名为 User_User_ID 的新列?为什么我不能像我想要的那样添加 Document 导航属性?

最佳答案

像这样使用 InverseProperty :

public partial class User_Document
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long User_Document_ID { get; set; }

public long User_ID { get; set; }

[ForeignKey("User_ID")]
[InverseProperty("Documents")]
public virtual User User { get; set; }
}

和:

public partial class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long User_ID { get; set; }

[StringLength(50)]
public string Username { get; set; }

[InverseProperty("User")]
public virtual List<User_Document> Documents { get; set; }
}

关于c# - Entity Framework 对导航属性感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29721471/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com