我正在尝试使用EF中的一个语句更新多个表。
我有3个表Category
,SubCategory
和Details
。这是我尝试使用的示例代码:
if (context.Categories.Where(C => C.Code == 1).FirstOrDefault() == null)
{
context.Categories.Add(new Data.Category() { Code = 1, Description = "First Category" });
context.SubCategories.Add(new Data.SubCategory() { SubCode = 1, Description = "First SubCategory", CategoryCode = C.Code });
context.Details.Add(new Data.Detail() { Code = 1, Description = "First Details", DetailCode = SubCode });
}
正如您所知,我只是在学习EF,我们非常感谢任何帮助或建议。
答案 0 :(得分:0)
首先,您需要一个允许这样做的数据模型。像这样:
public class Category
{
public int Code {get;set;}
public List<SubCategory> SubCategories {get;set;}
}
public class SubCategory
{
public int SubCode {get;set;}
public int ParentCode {get;set;}
public Category ParentCategory {get;set;}
}
您可以在一个EF语句中插入带有对象的对象:
var category = new Category
{
Code = 1,
SubCategories = new List<SubCategory>{new SubCategory{SubCode = 1}}
}
dbContext.Categories.Add(category);
dbContext.SaveChanges();
EF将使用孩子的ParentCode
财产在父母与其孩子之间建立联系。 ParentCategory属性是子对象的导航属性,允许您轻松获取它的父级。