【问题标题】:Ef 4 (with linq to Entity query) need shorthand Query to work with one to many(add record)Ef 4(使用 linq to Entity 查询)需要速记查询才能使用一对多(添加记录)
【发布时间】:2012-02-03 01:14:26
【问题描述】:

假设我有两个具有一对多关系的表(EF 4.1 中的关联)。现在我想向 table1(company) 添加一条新记录,并在该公司的 table2(services) 中添加一些相应的相关记录。
company..1........*..services
简而言之,需要速记查询(Linq to Entity)来处理一对多的数据存储。
更具体

       //add company
      company company=new company();// company_id primary key
       company.name="abc";
       company.address=""xyz;
        db.SaveChanges();
       //add related Services with foreign key company_id


更新::: 如果我的问题模棱两可或询问的上下文有问题,请告诉我通用(速记)Linq to Entity 查询以在两个表中添加新记录有一对多的关系。就像我们用来获取数据一样

 var data=dbContext.table1.Include("table2");

【问题讨论】:

    标签: asp.net asp.net-mvc-3 entity-framework entity-framework-4


    【解决方案1】:

    数据操作部分没有“速记查询”之类的东西。一般来说 Entity Framework != LINQ to Entities。除了查询之外,ORM 还提供了许多其他服务,例如 Entity Framework。

    您可以使用类似于以下代码段的方法来添加新的相关实体

    var company = new Company { Name = "Foo", Address = "Bar" };
    
    var serviceA = new Service { Name = "A"};
    var serviceB = new Service { Name = "B"};
    
    company.Services = new List<Service> { serviceA, serviceB };
    
    db.Companies.Add(company);
    db.SaveChanges();
    

    【讨论】:

    • 对象初始化器默认构造函数上的圆括号是多余的。意思是,它们完全没有意义。
    • Erange 我在查询中使用了简写术语,这意味着(简写==排序)将 Linq 排序到实体查询(在具有一对多 r/t 的两个表中添加记录)。就像我们使用 Any()、Include()..etc 方法一样
    • @Kannas 数据操作在很大程度上取决于手头的问题和所涉及的实体。很少有适合所有数据操作案例的可重用方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多