Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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#外键可以';t将对象添加到对象列表中_C#_Asp.net Core Mvc - Fatal编程技术网

C#外键可以';t将对象添加到对象列表中

C#外键可以';t将对象添加到对象列表中,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,我有两个模型课:电影和客户。我制作了一个一对多外键,这样我就可以将一部电影添加到customer中的列表中。但现在我无法向客户添加电影,也没有收到任何错误 这是我的密码 电影课 public class Movie { [Key] public int MovieId { get; set; } public String Name { get; set; } [Column(TypeName = "datetime2")] public DateTim

我有两个模型课:电影和客户。我制作了一个一对多外键,这样我就可以将一部电影添加到customer中的列表中。但现在我无法向客户添加电影,也没有收到任何错误

这是我的密码

电影课

public class Movie
{
    [Key]
    public int MovieId { get; set; }
    public String Name { get; set; }

    [Column(TypeName = "datetime2")]
    public DateTime? DateCreated { get; set; }

    public int? CustomerId { get; set; }
    public Customer Customer { get; set; }
}
客户类别

public class Customer
{
    [Key]
    public int CustomerId { get; set; }
    public string Name { get; set; }
    public string LastName { get; set; }
    public bool IsCreated { get; set; }
    public int MaxMovies { get; set; }

    [Column(TypeName = "datetime2")]
    public DateTime Created { get; set; }

    [Column(TypeName = "datetime2")]
    public DateTime? LastEdited { get; set; }

    [ForeignKey("MovieId")]
    public List<Movie> Movies = new List<Movie>();
}

我希望有人能告诉我我的代码有什么问题。

您不是在创建新的
电影,而是在搜索现有电影。因此,创建新电影并分配
客户ID

Customer customer = dbContext.Customers
    .Where(s => s.CustomerId == cid)
    .FirstOrDefault();
Movie movie = new Movie();
movie.CustomerId = customer.CustomerId;
movie.Name = "My new movie";
movie.DateCreated = DateTime.Now;

dbContext.Customers.Add(customer);
dbContext.Movies.Add(movie);

dbContext.SaveChanges();

EntityFramework将插入一个新实体。

我相信这就是您正在寻找的模型结构

顾客

public class Customer
{

    [Key]
    public int CustomerId { get; set; }

    public string Name { get; set; }
    public string LastName { get; set; }
    public bool IsCreated { get; set; }
    public int MaxMovies { get; set; }

    [Column(TypeName = "datetime2")]
    public DateTime Created { get; set; }

    [Column(TypeName = "datetime2")]
    public DateTime? LastEdited { get; set; }

    public ICollection<Movie> Movies = new List<Movie>();

}

然后,在创建/编辑电影时,只需为电影分配一个CustomerId,就可以通过访问customer.movies来检索客户的电影。为什么您认为代码有问题?您能告诉我们您得到的是哪一个编译器错误或异常,以及您得到它的行吗?另外,您似乎正在加载现有的电影,更改其上的客户id,然后将其保存回去。这不会创建新电影,而是更新现有电影。这可能是问题所在吗?在我看来,它为客户放映了很多电影,但总是0@LasseV.Karlsen是的,就是这样,但我尝试制作一部新电影并添加该电影,但我找不到方法。电影的电影ID为0,但它没有将其添加到列表中。您好,很抱歉最近出现了错误,但我现在收到了此sql错误“SqlException:当identity_insert设置为OFF时,无法在表'Customers'中插入identity列的显式值。”好的,现在发生的是。创建了一个新电影,但没有添加到列表中,所以现在当我查看所有电影时,它都是空的。是的,它确实创建了一个id为的新电影,但没有其他内容。@remco只是创建一个。”
public class Customer
{

    [Key]
    public int CustomerId { get; set; }

    public string Name { get; set; }
    public string LastName { get; set; }
    public bool IsCreated { get; set; }
    public int MaxMovies { get; set; }

    [Column(TypeName = "datetime2")]
    public DateTime Created { get; set; }

    [Column(TypeName = "datetime2")]
    public DateTime? LastEdited { get; set; }

    public ICollection<Movie> Movies = new List<Movie>();

}
public class Movie
{

    [Key]
    public int MovieId { get; set; }

    public String Name { get; set; }

    [Column(TypeName = "datetime2")]
    public DateTime? DateCreated { get; set; }

    [ForeignKey("Customer")]
    public int? CustomerId { get; set; }

    public Customer Customer { get; set; }

}