C# 无法创建EF外键映射
我在SQLUser和UserDefaultModel中有两个表,我有外键关联C# 无法创建EF外键映射,c#,entity-framework,C#,Entity Framework,我在SQLUser和UserDefaultModel中有两个表,我有外键关联 <AssociationConnector Association="Ins_PricingDBModel.FK_UserDefaultModel_Users" ManuallyRouted="false" /> 我需要使用ModelBuilder实现相同的映射。这就是我尝试过的 modelBuilder.Entity<UserDefaultModel>()
<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实体包括许多用户实体
}
.HasForeignKey(c=>c.Id)
可能不是您想要的。在这种情况下,EF将为您保留User\u Id
列,或者在UserDefaultModel
中添加public int UserId{get;set;}
,并使用.HasForeignKey(c=>c.UserId)
。