Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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# OneToMany添加新记录?_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# OneToMany添加新记录?

C# OneToMany添加新记录?,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我试图在2个类User和Broker之间创建一个OneToMany关系,其中User有许多Broker 问题是,当我添加一个新的代理时,一个新的用户也被创建了,我不知道为什么会这样 我怎样才能修好它 使用者 用户地图 这是实体框架的预期行为,实体框架为您提供的工具。换句话说,您不必担心创建一个用户,并且在创建后将其与该代理关联。用户是一个新实体,与dbcontext完全断开连接,因此,它将作为一个新实体与代理一起插入。 然而,为了避免这种情况,首先需要从数据库中读取用户,然后将其分配给代理,以便

我试图在2个类User和Broker之间创建一个OneToMany关系,其中User有许多Broker

问题是,当我添加一个新的代理时,一个新的用户也被创建了,我不知道为什么会这样

我怎样才能修好它

使用者

用户地图


这是实体框架的预期行为,实体框架为您提供的工具。换句话说,您不必担心创建一个用户,并且在创建后将其与该代理关联。

用户是一个新实体,与dbcontext完全断开连接,因此,它将作为一个新实体与代理一起插入。 然而,为了避免这种情况,首先需要从数据库中读取用户,然后将其分配给代理,以便在不插入新用户的情况下建立关系

  User user = Session["User"] as User;
  var userFromDb = context.Users.FirstOrDefault(t = > t.Id == user.Id);
  broker.user = userFromDb ;
  context.Brokers.Add(broker);
  context.SaveChanges();

您正在向broker.user添加一个用户,因此该用户将按预期与borker一起插入。@rad但我已经插入了该用户,broker.user=user正在获取该用户并建立关系。有没有办法做到这一点?这意味着我不需要使用broker.user=user?那么,它将如何知道我想要创建关系的用户,特别是因为该用户已经存在?对不起,我误解了最初的问题。我想这可以解决你的问题。
public class Broker{

    public long id                          { get; set; }
    public String name                      { get; set; }   

    public User user                        { get; set; }
public class UserMap : EntityTypeConfiguration<User>{
    public UserMap (){
        this.ToTable("Users");
        this.HasKey<long>(u => u.id);
        this.Property(u => u.id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        this.Property(u => u.name).IsRequired().HasMaxLength(50);

        HasMany(u => u.brokers).WithRequired(c => c.user);
public class BrokerMap : EntityTypeConfiguration<Broker>{
    public BrokerMap (){
        this.ToTable("Brokers");
        this.HasKey<long>(c => c.id);
        this.Property(c => c.id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        this.Property(c => c.name).IsRequired().HasMaxLength(50);       

        HasRequired(u => u.user).WithMany(c => c.brokers);
Broker broker = new Broker();
User user = Session["User"] as User;
broker.user = user;

context.Brokers.Add(broker);
context.SaveChanges();
  User user = Session["User"] as User;
  var userFromDb = context.Users.FirstOrDefault(t = > t.Id == user.Id);
  broker.user = userFromDb ;
  context.Brokers.Add(broker);
  context.SaveChanges();