首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF Code First Parent-Child插入identity列

EF Code First Parent-Child插入identity列
EN

Stack Overflow用户
提问于 2011-04-12 14:57:53
回答 2查看 35.8K关注 0票数 29

我有以下的模型。

代码语言:javascript
复制
class Parent
{
    int ParentId (identity column) { get; set; }
    string ParentName { get; set; }
    virtual ICollection<Child> Children { get; set; }
}

class Child
{
    int ChildId (identity column) { get; set; }
    string ChildName { get; set; }
    int ParentID { get ; set; } //foreign key to Parent(ParentID)
}

如何在单个事务中向父级和子级插入几行?基本上,我希望获得在父对象上生成的标识(例如,我在父对象中插入一行),并使用该值插入子行?如何使用Code First实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-12 15:44:22

您不必担心为了插入Child行,Parent的Id将获得什么值。这应该足够了:

代码语言:javascript
复制
var parent = new Parent
{
    // fill other properties

    Children = new List<Child>()
}

parent.Children.add(new Child { /*fill values */);

dbContext.Parents.Add(parent); // whatever your context is named
dbContext.SaveChanges();

对于记录,ID将在调用SaveChanges()之后分配,因此如果在插入Child实体之前确实需要ID,则始终可以调用SaveChanges()两次。

再说一次,这不应该是必要的。

顺便说一下,我建议将从ChildParent的外键属性设置为导航属性,这样Child类将如下所示:

代码语言:javascript
复制
class Child
{
    public int ChildId { get; set; } // identity column
    public string ChildName { get; set; }
    public virtual Parent Parent { get ; set; } //foreign key to Parent
}

这样,您就可以直接访问Child的父对象,而不必自己显式地从数据库中检索它(它将是延迟加载的)。

票数 46
EN

Stack Overflow用户

发布于 2011-04-13 05:07:13

有关如何做到这一点的示例,请参阅新的EF Code First MVC教程系列。本系列中的第六篇文章就是这样的一个例子。10个系列中的第一个是:http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5631489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档