首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带外键的实体框架主明细数据录入

不带外键的实体框架主明细数据录入
EN

Stack Overflow用户
提问于 2019-01-17 12:36:19
回答 1查看 206关注 0票数 1

我有两张桌子Orders & OrderDetailsOrder表具有一个identity ID列作为其主键。OrderDetails表将Order表的主列作为一列。

我不能使用外键。

代码语言:javascript
复制
public class Order
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long ID { get; set; }

    public DateTime OrderDate { get; set; }
}

public class OrderDetail
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long ID { get; set; }

    public long OrderID { get; set; }
    public long ItemID { get; set; }
    public decimal Quantity { get; set; }
}

当我插入记录时,我希望获得要在OrderDetail表列中使用的Order表的主键。我要在一次调用中插入记录。如果某些操作失败,我希望将插入操作回滚到两个表中。

EN

回答 1

Stack Overflow用户

发布于 2019-01-17 16:28:51

如果您使用的是DB生成的in (如MS中的IDENTITY ),则只需将entity添加到相关ObjectContext上的ObjectSet和SaveChanges中。系统将自动为您填写Id。

代码语言:javascript
复制
using (var context = new MyContext())
{
  context.MyEntities.AddObject(myNewObject);
  context.SaveChanges();

  int id = myNewObject.Id;
}

每个带有实体框架的插入后面都跟有Select SCOPE_IDENTITY(),它为新插入的记录返回自动生成的Id。

但是,在将更改保存到数据库之前,您无法获得自动生成的Id。如果您希望在单个事务中完成所有这些操作,我建议您通过使用transaction编写一个自定义存储过程来将记录插入到DB中。

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

https://stackoverflow.com/questions/54229124

复制
相关文章

相似问题

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