简体   繁体   English

实体框架查询从 select 添加数据

[英]Entity framework query add data from select

I am having a query written in C# with Entity Framework:我有一个使用实体框架用 C# 编写的查询:

            var query = _context.MyTable
            .Where(m => m.Id == request.MessageId && m.MessageStatusId == MessageStatusValue.Error)
            .Select(m => new Message()
            {
                Id = m.Id,
                MessageContentId = m.MessageContentId,
                FullContent = m.FullContent,
                CompanyCode = m.CompanyCode,
                Environment = m.Environment,
                MessageTime = m.MessageTime,
                MessageType = m.MessageType,
                QueueName = m.QueueName,
                QueueSeqNo = m.QueueSeqNo,
                Reciever = m.Reciever,
                ResponseMessageId = m.ResponseMessageId,
                Sender = m.Sender,
                ModTime = modInfo.ModTime,
                ModUserId = modInfo.ModUserId,
                MessageDirectionId = MessageDirectionValue.Out,
                MessageStatusId = MessageStatusValue.NotSent,

            });

And next I want to Add it to my database using var entity:接下来我想使用 var entity 将它添加到我的数据库中:

            var entity = _context.MyTable.Add(new Message()
        {
            Id = Guid.NewGuid(),
        }).Entity;

But I want to have every data from Select written above.但我想把 Select 的所有数据都写在上面。 How do I do that?我怎么做?

First of all you have to execute the query to get the results from the query.首先,您必须执行查询才能从查询中获取结果。 You can execute the query with ToList()您可以使用ToList()执行查询

        var messages = _context.MyTable
            .Where(m => m.Id == request.MessageId && m.MessageStatusId == MessageStatusValue.Error)
            .Select(m => new Message()
            {
                Id = m.Id,
                MessageContentId = m.MessageContentId,
                FullContent = m.FullContent,
                CompanyCode = m.CompanyCode,
                Environment = m.Environment,
                MessageTime = m.MessageTime,
                MessageType = m.MessageType,
                QueueName = m.QueueName,
                QueueSeqNo = m.QueueSeqNo,
                Reciever = m.Reciever,
                ResponseMessageId = m.ResponseMessageId,
                Sender = m.Sender,
                ModTime = modInfo.ModTime,
                ModUserId = modInfo.ModUserId,
                MessageDirectionId = MessageDirectionValue.Out,
                MessageStatusId = MessageStatusValue.NotSent,

            }).ToList();

Then you have a list of results which your are selected and you can add them to the db.然后你有一个你被选中的结果列表,你可以将它们添加到数据库中。 You can add every single message to the db or use AddRange(messages)您可以将每条消息添加到数据库或使用AddRange(messages)

You can read more about it here你可以在这里阅读更多关于它的信息

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM