C#外键可以';t将对象添加到对象列表中
我有两个模型课:电影和客户。我制作了一个一对多外键,这样我就可以将一部电影添加到customer中的列表中。但现在我无法向客户添加电影,也没有收到任何错误 这是我的密码 电影课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
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; }
}