![](/img/trans.png)
[英]Using Database first approach in Entity framework, how to fetch the data from a single table only which has multiple foreign key relationship?
[英]how to add a single record in to table which has foreign key using EF code first approach
我有两张桌子
ToDo
ToDoId [PK],
Title,
description,
Category ,
AssignedDate ,
DueDate
TaskReview
ReviewId,
Rating ,
Comment,
ToDoId [FK]
-我必须使用外键 ToDoId 向任务审查表添加评级和评论 -基本上使用 TodiId 向特定任务添加评级和评论。
public int AddRatingAndComment(int ToDoId, int rating,string comment)
{
using (var ctx = new Context())
{
//add rating and comment in task review table
}
}
如果 ToDo 表有一个 TaskReview 项目列表( 一对多关系),那么您可以获取现有的 ToDo 并添加一个新的 TaskReview 项目。
ToDo todo = ctx.ToDos.SingleOrDefault(x => x.ToDoId == ToDoId);
if(todo != null)
{
todo.TaskReviews.Add(new TaskReview(){...});
dbContext.SaveChanges();
}
如果 ToDo 和 TaskReview 之间存在一对一的关系,您将在 TaskReview model 中声明一个类型为 ToDo 的变量。( 一对一关系)现在如果您想将 TaskReview 添加到现有的 Todo,您可以获取它并用它来添加一个新的 TaskReview:
ToDo todo = ctx.ToDos.SingleOrDefault(x => x.ToDoId == ToDoId);
if(todo != null)
{
var addedTaskReview = new TaskReview(){
ToDo = todo,
...
};
ctx.TaskReview.Add(addedTaskReview);
dbContext.SaveChanges();
}
一对一实施
public class ToDo
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ToDoId { get; set; }
public string Title { get; set; }
public string description { get; set; }
public string Category { get; set; }
public DateTime AssignedDate { get; set; }
public DateTime? DueDate { get; set; }
public virtual TaskReview TaskReview { get; set; }
}
public class TaskReview
{
[ForeignKey("ToDo")]
public int TaskReviewId { get; set; }
public int Rating { get; set; }
public string Comment { get; set; }
public virtual ToDo ToDo { get; set; }
}
using (var ctx = new SchoolContext())
{
var toDo = ctx.Todos.Where(o => o.ToDoId == todoId).FirstOrDefault();
var taskReview = new TaskReview
{
ToDo = toDo,
Comment = "accepted",
Rating = 10
};
ctx.TaskReviews.Add(taskReview);
ctx.SaveChanges();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.