c# - 一对多关系在 EF 中不起作用

标签 c# entity-framework ef-code-first one-to-many entity-framework-migrations

在我的 MVC 项目中,我使用的是 EF Code First。 我有 2 张 table 。 表一:

namespace CL_AHR_CRM.Models
{
    public partial class Leads
    {
        [Key]
        public int LeadID { get; set; }  
        [NotMapped]            
        public string FullName { get { return FirstName + " " + LastName; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int NamePrefixID { get; set; }

        public virtual NamePrefixes NamePrefixes { get; set; }
    }
}

表 2:

namespace CL_AHR_CRM.Models
{
    public partial class NamePrefixes
    {
        [Key]
        public int NamePrefixID { get; set; }
        public string Prefix { get; set; }

        public virtual ICollection<Leads> Leads { get; set; }
    }
}

现在我想让他们建立一对多的关系。但它不起作用。 哪里有问题? 我在 ef 中使用迁移模式。

最佳答案

您是否尝试过使用 Fluent API 映射关系?

在您的 DbContext 类中,您应该覆盖 OnModelCreating 方法并生成如下关系:

public class MyEntities : DbContext
{
     protected override void OnModelCreating(DbModelBuilder modelBuilder)
     {
        modelBuilder.Entity<Leads>().HasRequired(m => m.NamePrefixes).WithMany(m => m.Leads).HasForeignKey(m => m.NamePrefixID);
     }
}

此代码块可能会解决您的问题。

更新:

我认为你应该在虚拟属性中使用数据注释来使其工作。

在 Lead 类中:

[ForeignKey("NamePrefixID")]
public virtual NamePrefixes NamePrefixes { get; set; }

你能试试吗?

问候

关于c# - 一对多关系在 EF 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31135683/

相关文章:

c# - LINQ 嵌套组性能

entity-framework - EF 5 Beta 1 Code First - 序列包含多个元素

c# - 禁用除滚动之外的 DataGridView

c# - 动态填充的 DropDownList 不会在回发时保留值

entity-framework - Dynamics CRM 中的 Entity.GetAttributeValue<T>(name) 和 Entity[name] 有什么区别?

c# - 架构中的每个类型名称必须是唯一的

c# - 将 EF Code First 应用程序部署到生产数据库

entity-framework - Entity Framework 代码优先映射如何反射(reflect)域驱动设计?

c# - 何时使用运行时类型信息?

c# - 如何通过 jQuery/javascript 在 ASP.NET 转发器中选择特定的 html 元素?