Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# 无法创建EF外键映射_C#_Entity Framework - Fatal编程技术网

C# 无法创建EF外键映射

C# 无法创建EF外键映射,c#,entity-framework,C#,Entity Framework,我在SQLUser和UserDefaultModel中有两个表,我有外键关联 <AssociationConnector Association="Ins_PricingDBModel.FK_UserDefaultModel_Users" ManuallyRouted="false" /> 我需要使用ModelBuilder实现相同的映射。这就是我尝试过的 modelBuilder.Entity<UserDefaultModel>()

我在SQLUserUserDefaultModel中有两个表,我有外键关联

  <AssociationConnector Association="Ins_PricingDBModel.FK_UserDefaultModel_Users" 
    ManuallyRouted="false" />

我需要使用ModelBuilder实现相同的映射。这就是我尝试过的

   modelBuilder.Entity<UserDefaultModel>() 
            .HasRequired(c=>c.User) 
            .WithMany() 
           .HasForeignKey(c => c.Id);

public class UserDefaultModel : Entity 
{ 

    public string DefaultModel { get; set; } 
    public virtual User User { get; set; } 
}
modelBuilder.Entity()
.HasRequired(c=>c.User)
.有很多
.HasForeignKey(c=>c.Id);
公共类UserDefaultModel:实体
{ 
公共字符串DefaultModel{get;set;}
公共虚拟用户用户{get;set;}
}

但是我仍然无法映射这些值。语法有效吗?

模型应该如下所示:

public class User
{
    public User()
    {
    }

    public int UserId { get; set; }
    public int UserDefaultModelId { get; set; }

    public virtual UserDefaultModel UserDefaultModel { get; set; }
}

public class UserDefaultModel
{
    public UserDefaultModel()
    {
        Users = new List<User>();
    }

    public int UserDefaultModelId { get; set; }

    public virtual ICollection<User> Users { get; set; }
}
公共类用户
{
公共用户()
{
}
public int UserId{get;set;}
public int UserDefaultModelId{get;set;}
公共虚拟UserDefaultModel UserDefaultModel{get;set;}
}
公共类UserDefaultModel
{
公共UserDefaultModel()
{
用户=新列表();
}
public int UserDefaultModelId{get;set;}
公共虚拟ICollection用户{get;set;}
}
以及使用fluentapi进行一对多访问

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //one-to-many 
    modelBuilder.Entity<User>()
                .HasRequired<UserDefaultModel>(s => s.UserDefaultModel) // User entity requires UserDefaultModel 
                .WithMany(u => u.Users); // UserDefaultModel entity includes many User entities

}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
//一对多
modelBuilder.Entity()
.HasRequired(s=>s.UserDefaultModel)//用户实体需要UserDefaultModel
.WithMany(u=>u.Users);//UserDefaultModel实体包括许多用户实体
}
  • 用户实体需要UserDefaultModel
  • UserDefaultModel实体包含许多用户
  • .HasForeignKey(c=>c.Id)
    可能不是您想要的。在这种情况下,EF将为您保留
    User\u Id
    列,或者在
    UserDefaultModel
    中添加
    public int UserId{get;set;}
    ,并使用
    .HasForeignKey(c=>c.UserId)