Entity framework 使用EF4选择进入

Entity framework 使用EF4选择进入,entity-framework,linq-to-entities,entity-framework-4,Entity Framework,Linq To Entities,Entity Framework 4,我是c、linq和EF4的新手,所以请容忍我。我相信这是件很简单的事,但我看不到 我要替换的存储过程执行SELECT INTO来查询一组数据,执行一些简单的转换,然后将结果输出到另一个表中。然后,返回这组数据以在代码中进行本地处理 我有一个查询,它将我的数据拉入匿名类型并处理所有转换。但是,我如何将数据发送到结果表中呢 最初,我考虑使用实体类型来存储初始结果。但是我有本地处理所需的额外字段,这些字段不会存储在结果表中 感谢所有英孚大师们愿意为我尝试一下 编辑:这里有一些基于Morteza帮助的伪

我是c、linq和EF4的新手,所以请容忍我。我相信这是件很简单的事,但我看不到

我要替换的存储过程执行SELECT INTO来查询一组数据,执行一些简单的转换,然后将结果输出到另一个表中。然后,返回这组数据以在代码中进行本地处理

我有一个查询,它将我的数据拉入匿名类型并处理所有转换。但是,我如何将数据发送到结果表中呢

最初,我考虑使用实体类型来存储初始结果。但是我有本地处理所需的额外字段,这些字段不会存储在结果表中

感谢所有英孚大师们愿意为我尝试一下

编辑:这里有一些基于Morteza帮助的伪代码,但似乎没有移动数据-

var ctx = new ReportEntities();
var query = from s in ctx.Source
            select new
            {
                s.SourceID,
                s.OtherStuff
            };

query.ToList().Select(q => new Report()
{
    SourceID = q.SourceID,
    OtherStuff = q.OtherStuff
});

ctx.SaveChanges();

从EF4开始,您可以使用单独的存储过程更新模型,并将其作为函数导入。我认为最简单的方法是利用这个新特性,创建第二个过程,接受结果数据作为参数,并将它们保存到结果表中。因此,您可以在完成数据处理后调用此函数

更新:


我想了想,这很容易。事情是。。。我正在努力学习用新的方式做事。因此,我正在退出存储过程,并试图将其保留在代码中。我这样做有什么不妥当吗?好吧,既然您说它将我的数据拉入匿名类型,我想您可能并没有一个EntityObject映射到那个结果表,但若您有,那个么您肯定可以用结果填充它,并将其持久化到DB中,而无需使用存储过程。您的模型中有这样一个实体吗?是的,我将投影到一个匿名类型,因为我返回的是结果表中没有的额外字段。我需要额外的字段,以便稍后在代码中进行一些本地处理。是的,结果表在my EDM.Perfect中,因此您可以先创建结果实体的新对象,然后使用AddObject方法和Context.SaveChanges将其插入数据库。如果你需要帮助,请告诉我。太好了。我是这样想的。但我不确定的是在匿名类型和实体对象之间移动数据。我是否需要手动循环匿名类型数据并为每个记录创建/设置新的实体对象?或者,有没有更简单的方法来移动/翻译它?我平均每次有500-1000张唱片。
var ctx = new ReportEntities();
var query = (from s in ctx.Source select new {
        s.SourceID,
        s.OtherStuff}).ToList();

List<Report> reports = query.Select(q => new Report() 
{
    SourceID = q.SourceID,
    OtherStuff = q.OtherStuff
}).ToList();

// Now you need to add your new report objects to the Context:
foreach(report in reports) {
    ctx.Reports.AddObject(report);
}

// Now is the time to call the SaveChanges on ObjectContext:
ctx.SaveChanges();